集合Set,List,Map添加删除元素效率比较

对List接口实现类ArrayList、LinkedList; Set接口实现类HashSet、TreeSet、LinkedHashSet; Map接口实现类LinkedHashMap、TreeMap、HashMap的存、取速度进行比较。

LinkedList与ArrayList:

LinkedList采用链表结构,在数据量较大时,插入元素只需改变插入点的相应索引,其他元素不受影响。ArrayList基于数组实现,插入元素要使其后的元素后移,因此在前部或中部插入元素时,LinkedList的速度显然更快。(删除元素亦是如此)。
而对于尾部添加(或删除)元素,两者差别不大,都很快。
对于读取元素ArrayList直接根据索引号读取,快。而LinkedList没有索引号,需要从链表头开始逐个向下查找,速度十分慢,且元素所在位置越靠后,速度越慢。

HashSet、TreeSet、LinkedHashSet存入速度比较

HashSet由于无序,存入速度最快。而TreeSet和LinkedHashSet由于有序,存入速度较慢。

LinkedHashMap、TreeMap、HashMap比较

HashMap通过计算对象的hashCode来将它放到指定的位置,人为无法预测。TreeMap用平衡二叉树的方式,将存入的对象进行字典排序并存放,因此存入的速度最慢。LinkedHashMap使用双向链表来维护键值对的次序,使得迭代次序与键值对的插入次序相同,因为它需要对插入元素进行排序与维护,因此效率低于HashMap。

你可能感兴趣的:(集合Set,List,Map添加删除元素效率比较)