集合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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容