1.集合容器map、set、list的实现类、区别以及底层的数据结构
集合是用来存储引用类型的容器(集合只能存储引用类型的数据,不能存储基本类型的数据)。
<1> 结构特点:List和Set是存储蛋类数据的集合,Map是存储键值对这样的双列数据的集合;
<2> List中存储的数据是有顺序的,并且值允许重复的;
Set中存储的数据是无顺序的,并且值不允许重复,但是元素位置是固定的(元素位置是有元素的hashcode来实现的)
Map中的存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的
<3> 实现类:
List:LinkedList 基于链表实现的,链表内存是散列的,增删快,查找慢
ArrayList 基于数组实现的,非线程安全,效率高,增删慢,查找快
Vector 基于数组实现的,线程安全,效率低,增删慢,查找慢
Map:HashMap 基于hash表实现Map接口,非线程安全,高效,允许键或值为null
HashTable 线程安全,低效,不允许有null的键值
Set:HashSet 底层是由HashMap实现,不允许集合中有重复的值,使用该方式时,需要重写equals()和hashCode()方法
LinkedHashSet 继承HashSet,底层使用的是LinkedHashMap
<4> 区别:
List集合中对象,按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象
Map 中的每一个元素包含一个键和一个值成对出现,键对象不可以重复,值对象可以重复;
Set集合中的对象不按照特定的方式排序,并且没有重复对象,但它的实现类能对集合中的对象按照特定的方式排序。