LinkedList,ArrayList,HashMap,TreeMap
hashMap是无序的,TreeMap是有序的(其中实现了比较器)
hashTable是无序的,但是线程安全,并且key和value都不能为null
hashmap的key和value都能为null,treemap key不能为null,value可以为null
hashSet的底层是根据HashMap来存储的 ,TreeSet的底层是根据TreeMap存储的。(其元素是通过key值存储的)
一般选用hashMap,因为hashMap是无序的查找快,treeMap是有序的查找慢
linkedHashMap是hashmap的子类,他可以保证输出可以和输入一样
vector、arraylist、linkedlist
vector与ArrayList是以数组形式存储的,vector线程安全
ArrayList是非线程安全的,一般不考虑线程安全问题时使用ArrayList
arraylist比linkedlist的查询速度快,linkedlist是以双向链表的形式存储的,所以插入和删除的时候比ArrayList快
补充
hashMap hashTable currentHashMap区别
1jdk1.7 hashmap(数组+链表,key先进行两次hash,得出值进行数组比较,若有相同值(hash冲突),通过equals比较key,相同更新,不相同链表添加)
2.jdk1.8hashmap(数组+链表+红黑树,操作与jdk7相似,不同处:当链表》8时改为红黑树存储)
currentHashMap 引入了分段锁的机制,分成了多个hashTable
hashtable整个加锁
所以效率 hashMap > currentHashMap > hashTable