java.util.LinkedList 你的名字 2022-05-23 09:45 120阅读 0赞 LinkedList浅谈 优点: 1.有序 2.可以向前面和向后添加 3.中间插入也很方便 4.可以用实现简单队列模式(removeFirst() 处理队列中的任务,add(); 向队列中排队) 缺点: 1.消耗内存有点大 2.定位删除和定位查找 都是比较慢 3.检索能力差 \----------------------------------------- 它的实现原理简单分析: ![70][] 图中的火车的车厢是个很好的例子,假设车厢里装的就是数据,从火车头开始,连接着第二个车厢,第二个车厢连接着第三个车厢······如此连接下去,那么就不解决了数组长度不可变的问题了么。来一个数据我加一节车厢,把数据装起来··· \----------------------------------------- 再看看代码分析,首先申请两个属性用来记录着火车的头和火车目前最后的一节车厢,没一节车厢用一个长度为3的数组来表示,什么是长度为3呢? 数组的下标0用来存储上一个数组的,相当于火车厢是要与上一节车厢连接着的。 数组的下标1用来存储数据 数组的下标2用来存储下一个数组的,相当与火车厢连接的下一节车厢。 上图理解: ![70 1][] 在看代码: ![70 2][] \----------------------------------------- 那么又是如何按指定位置插入或者删除的呢? 既然它是用数组的下标0和下标2去引用上一个数组和下一个数组的,那么只要把这两个引用的对象改变一下就可以轻松的删除数据或者插入数据了。 删除的示图 ![70 3][] 插入的示图 ![70 4][] \----------------------------------------- LinkedList常用的方法 ![70 5][] add 添加数据或者按下标添加数据 ![70 6][] addFirst 添加数据到首个位置 ![70 7][] addAll 批量添加数据,按下标位置批量添加数据 ![70 8][] removeFirst 删除首个数据 ![70 9][] remove 删除数据 不传参数是按顺序删除,调用一次删除一个,也可传入下标位置按位置删除,或者按对象删除。 ![70 10][] get 按下标取值 getFirst 获取首个数据 getLast 获取最后一个数据 ![70 11][] indexOF 搜索数据,返回下标位置,没有则返回-1 [70]: /images/20220523/c5289667528d46f29d15b7af49721a3e.png [70 1]: /images/20220523/b11565a01144408b8b5a9f71350a5036.png [70 2]: /images/20220523/9af98398b49541a89f107f1856b0a07b.png [70 3]: /images/20220523/48defbd304874dbe96ca4cd1cc7f4037.png [70 4]: /images/20220523/4f60a52bd913498c8bdcecb9cf2abb81.png [70 5]: /images/20220523/d2602244516a4de4bbf0800439dd3b01.png [70 6]: /images/20220523/149543d7b46b4c32aed6474b7e731dec.png [70 7]: /images/20220523/bcb044d1fccd4c3bb6ed7d64ae0524cb.png [70 8]: /images/20220523/d24aa2a386d94323b7693391ba510982.png [70 9]: /images/20220523/576420e1d7524d06a76174c73f16393e.png [70 10]: /images/20220523/8267b0f151f84603b025246221aad5f5.png [70 11]: /images/20220523/b85dbee588b9468190acb5040c4e8035.png
还没有评论,来说两句吧...