20230313 java.util.LinkedList

简介

java.util.LinkedList

LinkedList 相对 ArrayList 要复杂一些,不是因为链表操作比数组操作复杂,而是 LinkedList 实现了更多接口

LinkedList 除了实现 List 接口外,还实现了 Queue 和 Deque 接口,也就意味着可以作为队列或双向队列使用

对链表的学习非常有帮助

感悟

对于接口的认识

首先要熟悉接口的定义,对于接口的分层是非常有意义的

例如List接口中有些接口方法在Collection接口中已经存在了,但是仍然又必须要重复定义,因为这些方法是List数据结构的特性

抽象类都是作为接口子类的骨架实现

关于LinkedList实现

然后再去研究底层的实现

如果只是对 List 线性表的研究,只需要查看 LinkedList 中关于 List 接口的实现就可以了,其他接口无需关心

有些字段是为了支持其他接口,才加上的

如果只是需要实现List接口,很多代码都可以去掉

也可以自己根据LinkedList代码,实现一个最简版本的List基于链表的实现,去掉多余的代码即可

源码学习

链表的操作比较细致,需要边调试边学习

注意:LinkedList 是双向链表,第一个节点的prev和最后一个节点的next都是null

测试代码:

LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("a");
linkedList.add("b");
linkedList.add("c");
linkedList.add("d");

int b = linkedList.indexOf("b");

String s1 = linkedList.get(1);

linkedList.set(1, "s1");


linkedList.remove(1);

System.out.println(linkedList);

参考资料

posted @ 2023-06-20 11:24  流星<。)#)))≦  阅读(14)  评论(0编辑  收藏  举报