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

posted on 2018-08-27 16:48  ttke  阅读(177)  评论(0编辑  收藏  举报