Java集合类总结
Java的集合类关系图,摘自网络:
List:
1,ArrayList:内部采用数组存储结构;随机查找效率高,增删效率低;线程不安全;
2,LinkedList:内部采用链表存储结构;增删效率高,查找效率低;线程不安全;
3,Vector:与ArrayList没啥区别,源码也和ArrayList实现类似;自带同步,线程安全;
4,Stack:继承自Vector;提供push,pop方法,先进后出;线程安全;
5,Queue:为什么归到这里呢?本来是单独的一类,不过在SUN的JDK里就是用LinkedList来提供这个功能的,主要方法是offer/pull/peek。
Set:add/remove。
1,HashSet:内部采用HashMap实现的;线程不安全;
2,LinkedHashSet:内部采用LinkedHashMap实现;线程不安全;
3,TreeSet:内部采用TreeMap实现;线程不安全;
Map:put/get/remove。
1,HashMap:依据hash表,内部用数组和链表实现;线程不安全;
2,HashTable:依据hash表,内部用数组和链表实现;自带同步,线程安全;
3,ConcurrentHashMap:由于HashMap没有实现同步,执行效率比HashTable高;而HashTable自带同步,当表很大时,执行效率就会很低,ConcurrentHashMap综合了
HashMap和HashTable的优点:实现了线程同步,而且是用分桶的做法,将元素划分到一个个桶中,然后分别对每个桶加锁,这样,就能实现多个桶之间访问数据的并发,提
高了执行效率;线程安全;
4,LinkedHashMap:继承自HashMap,但在数组的基础上实现了链表功能,各个元素(节点)之间存在前后引用的关系,通过重写嵌套类HashMap.Entry实现了链表结构,
同样有容量的问题;
5,Properties:继承自HashTable。
6,WeekHashMap:用于在系统GC时的垃圾回收,可参考文章:java对象:强,软,弱和虚引用详解。
后续继续追加。