集合的概述
List、Map、Set的区别与联系
1、结构特点
- List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合;
- List存储的数据是有序的并且值是可以重复;Map中存储的数据是无序的,它的键是不允许重复的,但它的值是可以重复的;Set中存储的数据是无序的并且是不允许重复的,它的元素是由hashcode决定的,所以是固定的(用户无法控制hashcode,所有是无序的);
2、实现类
- List接口的3个实现类
- LinkedList基于链表的实现,非线程安全的,链表内存是散列的,增删快,查询慢;
- ArrayList是基于数组的,非线程安全的,效率高,增删慢,查询快;
- Vector是基于数组的,线程安全的,效率低,增删慢,查询慢;
- Map接口的4个实现类
- HashMap基于hash表的Map接口实现,非线程安全,高效,支持null值与null键;
- HashTable 线程安全,线程安全,低效,不支持null值与null键;
- LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序;
- SortMap接口 Treemap是SortMap的实现类,能够把保存的记录根据键排序,默认是键值的升序
- Set接口有2个实现类
- HashSet 底层是由HashMap实现,不允许集合中有重复的数值;
- LinkedHashSet 继承于HashSet,同时又基于LinkedHashMap来进行实现,底层实现是LinkedHashMap;