java set 效率_集合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。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值