说说java中的ArrayList和LinkedList

先说结论:

  • ArryaList查找快,插入、删除慢
  • LinkedList查找慢,插入、删除快

再说原因:

  • ArrayList由数组实现,可以直接通过下标查找元素;关于插入和删除,应该是在指定位置进行操作。不论插入和删除,都需要移动数组中后面的数据。指定的位置越靠前,开销越大。
  • LinkedList由双向链表实现,所以查找特定位置数据,只能从头遍历;而插入和删除操作,不需要移动链表中数据,只需调整前后指向就可以。

多说一点:

不要用for循环遍历LinkedList,使用iterator效率会好很多。两者时间负责度分别为O(n^2),O(n)。原因是,当我们用for循环时,每次get(i),都会从头遍历链表,即先从第0位,找到其后的node(1),再找到node(1)后的node(2)…一直找到第i个节点。而iterator遍历时,会缓存当前节点的前后节点,等查找下一节点时,直接从缓存,就可以找到需求查找的节点信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值