一、List集合(有序,元素可重复)
List接口下有以下实现类
ArrayList | Linkedlist | Vector |
---|---|---|
线程不安全,效率高 | 线程不安全,效率高 | 线程安全,效率低 |
底层实现是数组,所以增删慢,查改快 | 底层实现是链表,所以增删快,查改慢 | 底层实现是数组,所以增删慢,查改快 |
二、Set集合
Set接口有以下实现类
hashSet:无序,元素唯一,底层实现是Hash表,线程不安全,效率高。
如何实现元素的唯一呢?通过hashCode() 和重写的equals() 两个方法,hashCode通过hash算法得到每个元素的一个int类型的hash散列值,通过比较这个值来判断元素是否相同,然后再通过重写的equals()比较值是否相同。
LinkedHashSet:有序,元素唯一,线程不安全,效率高
底层数据结构是链表和Hash表,链表实现了元素顺序和存储顺序一致,而hash表保证了元素的唯一。
TreeSet:有序,元素唯一,线程不安全,效率高。
底层数据结构是红黑树,由二叉树保证了元素的有序,元素的唯一同样靠着Hashcode和equals两个方法。