collection集合——List(ArrayList、LinkList、Vector)、Set(HashSet、TreeSet)
2021/4/19 18:25:22
本文主要是介绍collection集合——List(ArrayList、LinkList、Vector)、Set(HashSet、TreeSet),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、集合
特点
1. 长度可以发生改变 2. 只能存储对象 3. 可以存储多种类型对象
与数组区别
数组 | 集合 |
---|---|
长度 : 长度 固定 | 可变 |
存储元素: 基本类型/引用类型 | 引用类型 |
元素类型的一致性: 必须一致 | 可以不一致 |
3.常用集合的分类:
Collection 接口的接口 对象的集合(单列集合)
├——-List 接口:元素按进入先后有序保存,可重复
│—————-├ LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
│—————-├ ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
│—————-└ Vector 接口实现类 数组, 同步, 线程安全
│ ———————-└ Stack 是Vector类的实现类
└——-Set 接口: 仅接收一次,不可重复,并做内部排序
├—————-└HashSet 使用hash表(数组)存储元素
│————————└ LinkedHashSet 链表维护元素的插入次序
└ —————-TreeSet 底层实现为二叉树,元素排好序
二、collecton集合基本功能
A:添加功能
- boolean add(Object obj):向集合中添加一个元素
- boolean addAll(Collection c):向集合中添加一个集合的元素。
System.out.println("~~~~~~~~~~~添加功能~~~~~~~~~~"); list.add("增加一个元素"); List<String> b = new ArrayList<String>(); b.add("B集合的第一个元素"); b.add("b集合中第二个元素"); list.addAll(b); //将B集合元素添加到A集合中 输出:
B:删除功能
- void clear():删除集合中的所有元素。
- boolean remove(Object obj):从集合中删除指定的元素
- boolean removeAll(Collection c):从集合中删除一个指定的集合元素。
System.out.println("~~~~~~~~~~~删除功能~~~~~~~~~~"); b.clear(); //删除b集合中的的所有元素 boolean t = list.remove("年后"); //从list集合中删除指定 (元素/索引(所在元素))第一次出现(索引小的) System.out.println("删除 年后 元素:"+ t); boolean ts = list.removeAll(b); //从list集合中删除b集合中的元素 System.out.println(ts); //输出: ~~~~~~~~~~~删除功能~~~~~~~~~~ 删除 年后 元素:true false
C:判断功能
- boolean isEmpty():判断集合是否为空。
- boolean contains(Object obj):判断集合中是否存在指定的元素。
- boolean containsAll(Collection c):判断集合中是否存在指定的一个集合中的元素。
System.out.println("~~~~~~~~~~~~判断功能~~~~~~~~~~"); boolean t1 = list.isEmpty(); System.out.println("list集合是否为空:" + t1); boolean t2 = list.contains("年后"); System.out.println("list中是否包含 年后 元素:" + t2); System.out.println("年后所在索引:" + list.indexOf("年后")); List<String> c = new ArrayList<String>(); c.add("c集合的第一个元素"); c.add("c集合中第二个元素"); list.add("c集合的第一个元素"); boolean t3 = list.containsAll(c); System.out.println("list是否包含c集合中的元素:" + t3);//list包含c集合中的所有元素即为true 输出: ~~~~~~~~~~~~判断功能~~~~~~~~~~ list集合是否为空:false list中是否包含 年后 元素:true 年后所在索引:2 list是否包含c集合中的元素:false
D:遍历功能
- Iterator iterator():就是用来获取集合中每一个元素。
Iterator<String> its = list.iterator(); boolean t4 = its.hasNext(); //判断是否还有下一个元素 System.out.println(t4); String x = its.next(); //返回上个元素 ,指向上个元素和下一个元素的中位置 System.out.println(x); 输出: ~~~~~~~~~~~~遍历功能~~~~~~~~~~~ true nice
E:长度功能
- int size():获取集合中的元素个数
System.out.println("~~~~~~~~~~~~~长度~~~~~~~~~~~~"); System.out.println(list.size());
F:交集功能
boolean retainAll(Collection c):判断两个集合中是否有相同的元素。
System.out.println("~~~~~~~~~~~~~交集功能~~~~~~~~~~~~"); System.out.println("list和c集合中是否具有相同元素:" + list.retainAll(c));
G:把集合转换成数组
Object[] toArray():把集合变成数组。
System.out.println("~~~~~~~~~~~~~集合变数组~~~~~~~~~~~~"); Object[] arrays = list.toArray(); for (Object a : arrays){ System.out.println(a); System.out.println(a instanceof String); }
二、List集合
(一) 遍历:
public static void main(String[] args) { //1、有序、可以重复 List<String> list = new ArrayList<String>(); list.add("年后"); list.add("nice"); list.add("asas"); list.add("年后"); //2、遍历:使用for循环 System.out.println("~~~~~~~~~~~~遍历:使用for循环~~~~~~~~~~~~"); for(int i=0; i<list.size(); i++){ System.out.println(i + ": " + list.get(i)); } //2、遍历:使用迭代 System.out.println("~~~~~~~~~~~~~~~遍历:使用迭代~~~~~~~~~~~~~~~~~~"); Iterator<String> it = list.iterator(); while (it.hasNext()){ String t = it.next(); System.out.println(t); } //3、遍历: 使用for-each System.out.println("~~~~~~~~~~~~~遍历: 使用for-each~~~~~~~~~~~~~"); for (String l : list){ System.out.println(l); } }
参考:文章:https://blog.csdn.net/haovip123/article/details/45423683
这篇关于collection集合——List(ArrayList、LinkList、Vector)、Set(HashSet、TreeSet)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享