1、子集结构
集合的顶层接口,不能被实例化
根接口Collection
常用子接口
1. List
实现类:ArrayList、Vector、LinkedList
2. Set
实现类:HashSet、TreeSet
2、List
list中存放的数据是有序的,可重复的
1、LinkedList实现类:
注:
A、LinkedList底层使用双向链表实现,因此对于数据的增删操作效率比ArrayList高
B、对数据的查询需要操作指针,所以查询操作效率较低;
C、LinkedList不是线程安全的;
D、数据可重复;
2、ArrayList实现类:
底层是用数组实现的,并且默认长度(容量)为10:
A、ArrayList底层是用数组实现的,通过索引下标可以快速的查到数据,所以它对
数据的查询操作效率高的多;
B、ArrayList不是线程安全的。
C、数据可重复性
3、vector:
注:
A、vector是线程安全的;
B、数据可重复
C、通过数组来实现的,但是效率一般比ArrayList低,如果不考虑线程安全问题,
一般使用ArrayList
3、Set
Set去除重复元素,无序的,重复元素会覆盖掉。
1、HashSet实现类:
底层数据是哈希表, 通过两个方法hashCode()和equals()保证元素的唯一性,方法自动生成,子类LinkedHashSet底层数据结构是链表和哈希表,由链表保证元素有序,由哈希表保证元素唯一。
a) 不保证set的迭代顺序
b) 当存储对象时需要重写equals()和hashCode()方法
注:
A、HashSet不是线程安全的;
B、HashSet允许有空值;
C、HashSet中不允许有相同值得存在;
2、TreeSet类
底层数据是红黑二叉树; 排序方式:自然排序、比较器排序, 通过比较返回值是否为0来保证元素的唯一性。
a) 能够保证元素唯一性(根据返回值是否是0来决定的),并且按照某种规则排序
i. 自然排序,无参构造方法(元素具备比较性)
按照compareTo()方法排序,让需要比较的元素所属的类实现自然排序接
口Comparable,并重写compareTo()方法
ii. 1. 让集合的构造方法接收一个比较器接口的子类对象(compareator)(此处
的Comparator为接口,需要写一个接口实现类,在实现类中重写compare()方法,
并在这里创建接口实现类的对象,可以用匿名内部类来创建实现类对象)
b) 底层是自平衡二叉树结构
c)当使用无参构造方法,也就是自然排序,需要根据要求重写compareTo()方法,
这个不能自动生成