List集合接口的介绍和使用

一.关于List集合类的继承关系图

List接口继承了Collection接口,而List接口下有三个重要的实现类:ArrayList,LinkedList,Vector

二.List接口的基本介绍

1.List接口是Collection接口的子接口
2.存入List集合中的元素是有序的(即添加顺序和取出顺序是一样的)

public static void main(String[] args) {List list = new ArrayList<>();list.add("jack");list.add(10);list.add(true);list.add("mary");System.out.println("list="+list);//输出结果为:list=[jack, 10, true, mary] 添加顺序和取出顺序是一样的}

3.List集合里的元素是可以重复存入口

public static void main(String[] args) {List list = new ArrayList<>();list.add("jack");list.add(10);list.add(true);list.add("mary");//可以放入重复的数据jackboolean b = list.add("jack");System.out.println(b);//输出结果为:trueSystem.out.println("list="+list);//输出结果为:list=[jack, 10, true, mary, jack] }

4.List集合中的每一个元素都有自己对应的顺序索引,即支持索引(索引是从0开始)

public static void main(String[] args) {List list = new ArrayList<>();list.add("jack");list.add(10);list.add(true);list.add("mary");list.add("jack");//获取索引为2的元素,即第三个元素Object o = list.get(3);System.out.println(o);//输出结果为:mary}

5.List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号取容器中的元素
6.JDK API中LIst接口的常用的实现类有:ArrayList,LinkedList,Vector

三.List接口的常用方法

由于List接口无法实例化,要想使用List接口的方法我们就用List的实现类ArrayList来演示它的常用方法

1.add(int index,Object o)方法:

在index位置插入o元素。(index表示下标,从0开始。o表示要插入的元素)

public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");//add(int index,Object o)方法的使用list.add(1,"小明");System.out.println("list="+list);//输出结果为:list=[张三, 小明, 李四, 王五]}
2.addAll(int index,Collection c)方法:

在index位置插入多个元素。(index表示下标,从0开始。c表示实现了Collection接口的子类多可以放入。如果元素插入成功返回true,否则返回false)

public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");//addAll(int index,Collection c)方法的使用List newList = new ArrayList<>();newList.add("小明");newList.add("小红");boolean b = list.addAll(1, newList);System.out.println(b);//输出结果:trueSystem.out.println("list="+list);//输出结果:list=[张三, 小明, 小红, 李四, 王五]}
3.get(int index)方法:

获取下标为index位置上的元素(index表示下标,从0开始。)

public static void main(String[] args) {List list = new ArrayList<>();list.add("jack");list.add(10);list.add(true);list.add("mary");list.add("jack");//获取索引为2的元素,即第三个元素Object o = list.get(1);System.out.println(o);//输出结果为:10}
4.indexOf(Object o)方法:

查找o对象在集合中首次出现的位置,即下标(如果没有就返回-1)

public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//indexOf(Object o)方法的使用int index = list.indexOf("李四");System.out.println(index);//输出结果为:1}
5.lastIndexOf(Object o)方法:

查找o对象在集合中末次出现的位置,即下标(如果没有就返回-1)

public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//lastIndexOf(Object o)方法的使用int index = list.lastIndexOf("李四");System.out.println(index);//输出结果为:3}
6.remove(int index)方法:

移除index位置上的元素,并且返回此元素

public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//remove(int index)方法的使用Object o = list.remove(1);System.out.println(o);//输出结果为:李四System.out.println("list="+list);//输出结果为:list=[张三, 王五, 李四]}
7.set(int index,Object o)方法:

修改index位置上的元素为o,即为替换,并返回被修改的元素

public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//set(int index,Object o)方法的使用Object o = list.set(1, "小明");System.out.println(o);//输出结果为:李四System.out.println("list="+list);//输出结果为:list=[张三, 小明, 王五, 李四]}
8.subList(int fromIndex,int toIndex)方法:

返回从fromindex到toIndex位置上的集合(包括fromIndex位置但是不包括toIndex位置,即[formIndex,toIndex)。)

public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//subList(int fromIndex,int toIndex)方法的使用List newList = list.subList(1, 3);System.out.println("newList="+newList);//输出结果为:newList=[李四, 王五]}

四.List的三种遍历方式

1.使用Iterator(迭代器)
public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//使用Iterator(迭代器)遍历Iterator iterator = list.iterator();while (iterator.hasNext()) {Object o =  iterator.next();System.out.println(o);//遍历完最终输出结果为:张三 李四 王五 李四}}
2.使用曾强for循环
List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//使用曾强for循环遍历for (Object o : list) {System.out.println(o);//遍历完最终输出结果为:张三 李四 王五 李四}}
3.使用普通for循环,即利用下标遍历(下标从0开始)注
public static void main(String[] args) {List list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("李四");//使用普通for循环遍历for (int i=0;i<list.size();i++){System.out.println(list.get(i));//遍历完最终输出结果为:张三 李四 王五 李四}}

注:部分内容来源于网络 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/449949.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SVDiff: Compact Parameter Space for Diffusion Fine-Tuning——【论文笔记】

本文发表于ICCV 2023 论文地址&#xff1a;ICCV 2023 Open Access Repository (thecvf.com) 官方代码&#xff1a;mkshing/svdiff-pytorch: Implementation of "SVDiff: Compact Parameter Space for Diffusion Fine-Tuning" (github.com) 一、Introduction 最近几…

Xmind 2023 下载安装教程,保姆级教程,小白也能轻松搞定,附安装包

前言 XMind 是一款非常实用的思维导图软件&#xff0c;应用全球最先进的Eclipse RCP 软件架构&#xff0c;全力打造易用、高效的可视化思维软件&#xff0c;强调软件的可扩展、跨平台、稳定性和性能&#xff0c;致力于使用先进的软件技术帮助。 准备工作 1、Win7 及以上系统…

支付宝直连商户处理支付交易投诉管理,支持多商户

大家好&#xff0c;我是小悟 1、问题背景 玩过支付宝生态的&#xff0c;或许就有这种感受&#xff0c;如果收到投诉单&#xff0c;不会通知到手机端&#xff0c;只会在支付宝商家后台-账号中心-安全中心-消费者投诉-支付交易投诉那里显示。那你能一直盯着电脑看吗&#xff1f;…

STL——空间配置器

空间配置器是STL六大组件之一&#xff0c;它和其他五个组件相互配合&#xff0c;起着很关键的作用。 容器&#xff1a;各种数据结构、如vector、list、stack、deque、queue、set、map、unordered_map等等算法&#xff1a;各种算法&#xff0c;如sort、serach、copy、erase 提供…

LED点阵屏(基于51单片机)

师从江科大 LED点阵屏 LED点阵屏由若干个独立的LED组成&#xff0c;LED以矩阵的形式排列&#xff0c;以灯珠亮灭来显示文字、图片、视频等。 LED点阵屏分类 按颜色&#xff1a;单色、双色、全彩 按像素&#xff1a;8*8、16*16等&#xff08;大规模的LED点阵通常由很多个…

Llama2大模型开源,大模型的Android时代来了?

就昨天凌晨,微软和Meta宣布Llama2大模型开源且进一步放开商用,一下朋友圈刷屏。要知道,开源界最强大的模型就是过去Meta开源的Llama,而现在Llama2更强大,又开放商用,更有微软大模型霸主企业撑腰(微软既投资大模型界的IOS——ChatGPT,又联合发布大模型的Android——Llam…

阿里云OSS对象存储

一、前言 阿里云对象存储OSS作用&#xff1a;用于存储图片、视屏、文件等数据。 参考阿里云文档地址&#xff1a;阿里云对象存储教程 二、总体思路 说明&#xff1a;客户端给服务端发送请求&#xff0c;获取policy和signature等数据&#xff08;服务端提供&#xff09;&#…

自动化诊断测试之CANoe.DIVA入门

目录 0 前言 1 CANoe.DIVA基础 2 CANoe.DIVA TIPs 0 前言 写在前面&#xff1a;如对本文有任何疑问欢迎评论区讨论&#xff0c;希望和大家一起进步。同时HIL测试群欢迎大家加入如有需要也可私信我拉你。VT和DIVA都可以做UDS的自动化测试&#xff0c;但相对VT来说使用DIVA生成…

在conda 虚拟环境中快速卸载安装包(操作详解)

手动卸载虚拟环境中的安装包 1.卸载已经安装的安装包&#xff08;不指定版本好&#xff09; pip uninstall 包名 2.卸载指定的安装包 pip uninstall 包名版本号 注意 “” 不是 “” 批量快速卸载 写一个txt文件&#xff0c;例如aaa.txt。官网一般是requirements.txt&…

时序预测 | MATLAB实现基于CNN-BiLSTM-AdaBoost卷积双向长短期记忆网络结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于CNN-BiLSTM-AdaBoost卷积双向长短期记忆网络结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于CNN-BiLSTM-AdaBoost卷积双向长短期记忆网络结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.Matlab实现…

单臂路由实验(华为)

思科设备参考&#xff1a; 单臂路由实验&#xff08;思科&#xff09; 一&#xff0c;实验目的 在路由器的一个接口上通过配置子接口的方式&#xff0c;实现相互隔离的不同vlan之间互通。 ​ 二&#xff0c;设备配置 Switch1 <Huawei>sys [Huawei]vlan batch 10 20…

一键转换MOV至MP3:轻松删除原视频,释放存储空间!

你是否曾经有一个MOV格式的视频文件&#xff0c;想要提取其中的音频却苦于没有合适的工具&#xff1f;现在&#xff0c;有了我们的全新视频剪辑工具&#xff0c;这个烦恼全部消失&#xff01;我们为你提供一键式解决方案&#xff0c;将MOV视频文件快速转换为MP3音频格式。 首先…