Collectin集合
一、为什么需要Collection
Java是一门面向对象的语言,就免不了处理对象,为了方便操作多个对象,就需要把这多个对象存储起来,想要存储多个对象,很容易想到一个容器,常用的容器有StringBuffered、数组,虽然有对象数组,但是数组的长度是不可变的,所以Java就为我们提供了集合Collection。
二、数组和集合的区别
1、长度的区别:
- 数组的长度固定
- 集合的长度可变
2、元素的数据类型
- 数组可以存储基本数据类型,也可以存储引用数据类型
- 集合只能存储引用数据类型,如果要存储基本数据类型,可以存储对应的包装类。
三、Collection的功能
1、添加功能
- boolean add(Object obj):添加一个元素
- boolean addAll(Collection c):添加一个集合的元素
2、删除功能
- void clear():移除所有的元素
- boolean remove(Object o):移除一个元素
- boolean removeAll(Collection c):移除一个集合的元素,只有一个元素被移除了,就返回true
3、判断功能
- boolean contains(Object o):判断集合是否包含该元素
- boolean containsAll(Collection c):判断集合中是否包含指定的集合元素,只有包含所有的元素,才叫包含
- boolean isEmpty():判断集合是否为空
4、获取功能
- Interator iterator():迭代器
5、交集功能
- boolean retainAll(Collection c):移除此colleaction中为包含在指定collection中的所有元素。集合A和集合B做交集,最终的结果保存在集合A,返回值表示的是A是否发生过变化。
四、常用的集合
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CxcCioYy-1612674971078)(C:\Users\jiang\Pictures\Saved Pictures\image-20210205103652683.png)]
五、List集合介绍
1、List集合的特点
有序,存储顺序和取出顺序一致,可以重复,有角标概念。
2、List集合常用子类
- ArrayList:底层数据结构是数组,线程不安全。
- LinkeList:底层数据结构是链表,线程不安全。
六、Set集合介绍
1、Set集合的特点
元素不可重复,没有角标。
2、Set集合常用子类
- HashSet:底层数据结构是哈希表(是一个元素为链表的数组),其实就是一个HashMap,将add中的参数,作为Hashmap的key值,存在Hashmap中,HashMap的value值为一个空的Object型的值。HashSet中的元素是无序的。
- LinkedHashSet:底层有哈希表和链表组成。LinkedHashSet中的元素是有序的,存储顺序和取出顺序一致。
是无序的。 - LinkedHashSet:底层有哈希表和链表组成。LinkedHashSet中的元素是有序的,存储顺序和取出顺序一致。
- TreeSet:底层数据结构是红黑树(一个自平衡的二叉树)。元素按照升序排序。不能放入不可比较的泛型。