Java中List集合
Java中List集合
1、三大特点:
有序的(存取的顺序是一致的);有索引;允许存储重复的元素;
初始代码:
代码语言:javascript代码运行次数:0运行复制 //初始代码
List<String> list = new ArrayList<>();
list.add("大哥");
list.add("二哥");
list.add("三哥");
println(list);//[大哥, 二哥, 三哥]
println("=====================");
1、为指定位置添加一个元素
代码语言:javascript代码运行次数:0运行复制 //下面演示list特有的带索引的方法
//1、为指定位置添加一个元素
list.add(1,"我插个队");
println(list);//[大哥, 我插个队, 二哥, 三哥]
println("=====================");
2、删除指定位置的元素
代码语言:javascript代码运行次数:0运行复制 //2、删除指定位置的元素
String string = list.remove(1);
println(list);//[大哥, 二哥, 三哥]
println("被移除的元素是"+string);//我插个队
println("=====================");
、替换指定位置的元素
代码语言:javascript代码运行次数:0运行复制 //、替换指定位置的元素
String string1 = list.set(2,"小弟");
println(list);//[大哥, 二哥, 小弟]
println("被替换的元素"+string1);
println("=====================");
4、获取指定位置的元素
代码语言:javascript代码运行次数:0运行复制 //4、获取指定位置的元素
String string2 = list.get(1);
println(string2);//二哥
5、使用迭代器遍历(为了增强对迭代器的熟悉度)
代码语言:javascript代码运行次数:0运行复制 //5、使用迭代器遍历,以及多个循环遍历的方法
Iterator<String> iterator = list.iterator();
while (iterator.hat()){
println(());
}
for(Iterator<String> iterator1 = list.iterator();iterator1.hat();){
println(());
}
//增强for循环-底层是迭代器
for(String s : list){
println(s);
}
//for循环遍历,使用get方法
for (int i = 0; i < list.size(); i++) {
println(list.get(i));
}
1、简介
List接口的大小可变的数组的实例(底层是数组);
此实现不是同步的(意思是多线程,效率高);
里面包含了很多通过索引操作元素的方法;
简化:基于数组实现,增删快,查询慢,线程不安全;
2、特点
增删慢,查询快;
、注意
很多程序员非常随意的使用ArrayList完成任何需求,并不严谨,不提倡!
4、为什么增删快,查询慢
ArrayList底层是基于数组实现的,数组是一串连续的存储空间,所以ArrayList集合内部的元素必须是连续存储的,当要在中间删除或者插入一个元素,其后面的元素都需要进行一移动,因此ArrayList集合不适合删除和插入,而适合查和遍历操作;
5、ArrayList集合长度自动增长原理
ArrayList集合不需要在定义时指定数组的长度,当所要存储的元素超过ArrayList长度的时候,系统会自动创建一个更大长度的数组,将之前的元素复制进去,然后继续进行添加操作;
1、简介
List 接口的链接列表实现(底层是链表结构);
此实现不是同步的(意思是多线程,效率高);
里面包含了多个操作首尾元素的方法;
简化:基于双向链表实现,增删快,查询慢,线程不安全!
2、特点
查询慢,增删快;
、注意
使用LinkedList集合特有的方法时不能使用多态;
.5、补充说明
LinkedList采用双向链表结构存储元素,对LinkedList元素进行插入和删除时,只需要在对应节点上进行,对其他元素没有影响,因此插入和删除操作很快,但是在随机访问时需要对内部元素进行从头直到遍历到该元素为止,速度较慢;
4、使用
初始代码:
代码语言:javascript代码运行次数:0运行复制 //创建LinkedList,添加默认数据
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("大哥");
linkedList.add("二哥");
linkedList.add("三哥");
println(linkedList);//[大哥, 二哥, 三哥]
println("=====================");
1、将指定的元素插入到集合的开头:
代码语言:javascript代码运行次数:0运行复制 //1、将指定的元素插入到集合的开头
linkedList.addFirst("大");//[大, 大哥, 二哥, 三哥]
println(linkedList);
println("=====================");
2、将指定的元素插入到集合的末尾:
代码语言:javascript代码运行次数:0运行复制 //2、将指定的元素插入到集合的末尾
linkedList.addLast("小");
println(linkedList);//[大, 大哥, 二哥, 三哥, 小]
println("=====================");
、将一个元素推入此列表所表示的堆栈,此方法等效于addFirst:
代码语言:javascript代码运行次数:0运行复制 //、将一个元素推入此列表所表示的堆栈,此方法等效于addFirst
linkedList.push("大之前");
println(linkedList);//[大之前, 大, 大哥, 二哥, 三哥, 小]
println("=====================");
4、获取集合的第一个元素:
代码语言:javascript代码运行次数:0运行复制 //4、获取集合的第一个元素
println("获取集合的第一个元素为"+linkedList.getFirst());
println("=====================");
5、获取集合的最后一个元素:
代码语言:javascript代码运行次数:0运行复制 //5、获取集合的最后一个元素
println("获取集合的最后一个元素为"+linkedList.getLast());
println("=====================");
6、移除并返回集合的第一个元素:
代码语言:javascript代码运行次数:0运行复制 //6、移除并返回集合的第一个元素
println("所移除的集合的第一个元素为"+linkedList.removeFirst());
println(linkedList);//[大, 大哥, 二哥, 三哥, 小]
println("=====================");
7、移除并返回集合的最后一个元素:
代码语言:javascript代码运行次数:0运行复制 //7、移除并返回集合的最后一个元素
println("所移除的集合的最后一个元素为"+linkedList.removeLast());
println(linkedList);//[大,大哥, 二哥, 三哥]
println("=====================");
8、从列表所表示的堆栈出弹出一个元素,等效于removeLast:
代码语言:javascript代码运行次数:0运行复制 //8、从列表所表示的堆栈出弹出一个元素,等效于removeLast
println(linkedList.pop());
println(linkedList);//[大哥, 二哥, 三哥]
println("=====================");
9、使用迭代器遍历(为了增强对迭代器的熟悉度):
代码语言:javascript代码运行次数:0运行复制 //9、使用迭代器遍历(为了增强对迭代器的熟悉度)
Iterator<String> iterator = linkedList.iterator();
while (iterator.hat()){
println(());
}
for(Iterator<String> iterator1 = linkedList.iterator();iterator1.hat();){
println(());
}
//增强for循环-底层是迭代器
for(String string : linkedList){
println(string);
}
1、简介
所有单列集合的祖宗;
Vector
类可以实现可增长的对象数组(底层是数组);
与新 collection 实现不同,Vector
是同步的(单线程,速度慢);
JDK1.0版本的,非常古老;
简化:基于数组实现,增删慢,查询快,线程安全;
2、补充
与ArrayList不同的是,Vector支持线程同步,即同一时刻只允许一个线程对Vector进行新增、删除、修改等操作,以保证多线程环境下数据的一致性,但需要对Vector进行频繁的加锁解锁操作,效率很低;
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-01-06,如有侵权请联系 cloudcommunity@tencent 删除javalist遍历集合数组#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:【Java设计模式】020
下一篇:【Java设计模式】018
推荐阅读
留言与评论(共有 6 条评论) |
本站网友 泉州美容医院 | 0秒前 发表 |
二哥 | |
本站网友 漳州江滨公园 | 2分钟前 发表 |
ArrayList集合长度自动增长原理ArrayList集合不需要在定义时指定数组的长度 | |
本站网友 强迫症的治疗 | 14分钟前 发表 |
查询慢ArrayList底层是基于数组实现的 | |
本站网友 小喇叭开始广播啦 | 27分钟前 发表 |
获取集合的最后一个元素 println("获取集合的最后一个元素为"+linkedList.getLast()); println("=====================");6 | |
本站网友 保障机制 | 13分钟前 发表 |
三哥] println("=====================");8 |