List Set Map比较:
List:有序,可重复。
Set:无序,不重复。
Map:键值对存储,value可重复,key不可重复。
LinkedList和ArrayList:
LinkedList: 使用双向链表,插入、删除效率高,随机访问效率低
ArrayList: 底层使用数组,在内存中分配连续的空间,遍历元素和随机访问效率高;插入、删除特定位置效率低
Vector和ArrayList
Vector是线程同步的,线程安全,在处理大量数据的时候,速度较慢
ArrayList不具备线程同步的安全性,所以速度更快
HashSet、LinkedHashSet、TreeSet
HashSet:用来存储互不相同的任何元素
LinkedHashSet:使用链表扩展实现HashSet类,支持对元素的排序。注意:如果不需要维护元素被插入的顺序,就应该使用HashSet,更加高效
TreeSet:可以确保所有元素是有序的
HashMap、LinkedHashMap、TreeMap
HashMap:查询、插入、删除效率高
LinkedHashMap:支持元素的插入顺序
TreeMap:遍历有序集合时效率高
HashMap与Hashtable之间的异同
1、实现原理相同,功能也相同,在很多情况下可以互用
2、HashMap实现了Map接口;Hashtable继承自Dictionary
3、HashMap非线程安全;Hashtable支持线程安全
4、HashMap允许空值;Hashtable不允许空值
Map的使用建议:
1、如果更新的时候不需要保持Map中元素的顺序,使用HashMap
2、如果希望保持Map中的元素顺序和插入顺序一致,使用LinkedHashMap
3、如果希望可以使用比较器进行排序,那么使用TreeMap
4、如果是在多线程场景,希望线程安全,就使用Hashtable
Queue:队列,先进先出