美文网首页
集合Set,List,Map添加删除元素效率比较

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

作者: 尉昌达 | 来源:发表于2016-07-28 22:46 被阅读655次

    对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添加删除元素效率比较

          本文链接:https://www.haomeiwen.com/subject/hgaajttx.html