List、Set、Map这三个集合是我们经常使用的,面试经常会遇到,牢牢记住,搞定面试官。
List集合,Set集合都是继承Collection父接口。
Map没有继承Collection父接口,Map是键值对集合(key到value的映射),是把键对象和值对象进行映射的集合。
1.List
list是一种有序集合,按照对象进入的顺序保存对象,并且允许重复对象,插入多个null值。
list查找效率快,但增删效率慢,增删会引起其他元素位置发生改变。
特点:有序,允许重复,查询快,增删慢
实现类有:
List 的实现类有 ArrayList、LinkedList、Vector
ArrayList和 Vector底层都是通过数组实现,两种类型在查询效率上会高很多,Vector 是线程安全的, ArrayList 线程不安全的,性能会稍慢一些。
LinkedList是线程不安全的,底层用链表结构存储数据的,适合数据的动态插入和删除,随机访问和遍历速度比较慢。
2.Set
set是无序的集合,不是按照对象进入的顺序保存,不可重复,只允许一个null值出现。
set检索元素效率低,而增删效率快,增删不会引起其他元素位置发生改变。
特点:无序,不允许重复,查询慢,增删快
实现类有:
Set的实现类有HashSet 和 TreeSet
HashSet底层使用的是HashMap哈希表结构储存,无序的
TreeSet底层用的是TreeMap树结构储存,有序的
3.Map
map以键值对的方式存储元素,根据键得到值,所有Map集合的Key是无序不可重复的,key和value都是引用数据类型,存的都是内存的地址。
特点:键值储存,key无序不可重复
实现类:
Map集合的实现类主要为HashMap、HashTable。
HashMap底层采用哈希表的数据结构,非线程安全的。
HashTable底层采用哈希表的数据结构,线程安全的,效率太低
原文链接:https://blog.csdn.net/m0_61972291/article/details/126661124