集合
java中提供的一种容器,可以用来存储多个数据。
集合和数组的区别
- 数组的长度是固定的,集合的长度是可变的
- 数组中存储的是同一种类型的元素,可以存储基本数据类型,也可以存储引用数据类型。集合存储的都是对象,只能存储引用数据类型
- 数组只能存储同种数据类型的元素,集合可以存储不同类型的元素
概述
-
List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口
-
Set下有HashSet,LinkedHashSet,TreeSet
-
List下有ArrayList,Vector,LinkedList
-
Map下有Hashtable,LinkedHashMap,HashMap,TreeMap
-
Collection接口下还有个Queue接口,有PriorityQueue类
-
Queue接口与List、Set同一级别,都是继承了Collection接口。
看图你会发现,LinkedList既可以实现Queue接口,也可以实现List接口.只不过呢, LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。SortedSet是个接口,它里面的(只有TreeSet这一个实现可用)中的元素一定是有序的。
Collection接口
Collection 层次结构 中的根接口
常用方法
添加
- boolean add(Object obj) 在集合末尾添加一个元素
- boolean addAll(Collection c) 将b集合的元素添加到a集合中
addAll返回的类型为boolean,若b集合不为空,则返回true
删除
- void clear() 移除集合中所有元素
- boolean remove(Object o) 移除集合中的一个指定元素
- boolean removeAll(Collection c) 移除两个集合的交集元素,并返回给a集合,移除一个及以上返回就为true
移除有指定元素:
移除没有指定元素:
移除有交集元素:
移除没有交集元素:
判断
- boolean contains(Object o) 判断集合中是否包含指定的元素
- boolean containsAll(Collection c) 判断a集合是否包含b集合的所有元素
- boolean isEmpty() 判断集合是否为空
当a集合包含b集合所有元素时
当a集合没有包含b集合所有元素时
判断是否为空
交集
- boolean retainAll(Collection c) 获取两个集合的交集元素,返回给a集合
有交集时:
没交集时:
当没交集时,a集合就为空,不再含有原来的元素
获取
-
Iterator iterator()
API中是这样说明的
- 返回集合中的元素个数 int size()
返回集合中元素个数:
遍历集合:
集合转为数组
- Object[] toArray() 将集合转为数组
集合转为数组:
参考文章:
https://blog.csdn.net/zhangqunshuai/article/details/80660974