JAVA 集合性能特性汇总

时间:2021-03-25 17:54:23

JAVA集合平时使用较多的是ArrayList和HashMap,其实还有很多不常用的,总结下其特点和性能,以备使用

 1.  Set有2种典型实现,HashSet 和 TreeSet, TreeSet就是排序的的Set,由于TreeSet内部需要红黑算法树来维持其排序,添加和查询方面HashSet都优于TreeSet,通常除非需要一个排序的Set情况外,都使用HashSet。HashSet还有个子类LinkedHashSet,带链表的HashSet,自然它的优势是遍历,但相对的插入删除操作性能就会比较差。最后一种叫EnumSet,里面只能存一种枚举,性能最好。

2.  线性表接口List,两种实现ArrayList(Vertor和ArrayList类似,已经很少使用)和LinkedList,一个基于数组一个基于链表,同样的,除非是很care遍历性能的情况外,都使用ArrayList,ArrayList使用连续内存保持数据,随机访问的性能最佳。

3.   对于Map,最常用的HashMap在大多数情况下性能是最好的,Hashtable是线程安全版的HashMap,由于增加了线程安全所以性能稍差,TreeMap更慢,但由于其排序性,取出Keyset后转换成Array就直接是排好序了,LinkedHashMap极少使用,实在没什么优点(拿Map做遍历?)。