扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
本篇文章为大家展示了LinkedList子类的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
公司主营业务:做网站、网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出高邑免费做网站回馈大家。
在List接口中还有一个比较常用的子类:LinkedList,这个类通过名称就可以发现其特点:基于链表的实现。那么首先观察一下LinkedList的定义:
public class LinkedListextends AbstractSequentialList implements List , Deque , Cloneable, Serializable
LinkedList类的继承关系
范例:使用LinkedList实现集合操作
import java.util.LinkedList;import java.util.List;public class JavaAPIDemo {public static void main(String[] args) throws Exception { Listall = new LinkedList ();all.add("Hello");all.add("Hello");all.add("Wolrd");all.add("MLDN");all.forEach(System.out::println); //Hello Hello World MLDN } }
如果现在只是观察程序的功能会发现和ArrayList使用是完全一样的,但是其内部实现机制是完全不同的,首先观察LinkedList构造方法里面并没有提供像ArrayList那样的初始化大小的方法,而只是提供了无参构造处理:“public LinkedList()”。随后观察add()方法的具体实现。
public boolean add(E e) { linkLast(e);return true; }
在之前编写自定义链表时,是判断了传入数据是否为null,如果为null则不进行保存,但在LinkedList中并没有做这样的处理,而是所有的数据都可以保存,而后此方法调用了linkLast()方法(在最后一个节点后追加)。
void linkLast(E e) { final Nodel = last; final Node newNode = new Node<>(l, e, null); last = newNode;if (l == null) first = newNode;elsel.next = newNode; size++; modCount++; }
在LinkedList类中保存的数据都是利用Node节点进行的封装处理,同时为了提高程序执行性能,每一次都会保存上一个追加的节点(最后一个节点),就可以在增加数据的时候避免递归处理,在增加数据时要进行数据保存个数的追加。
通过上面的分析,可以发现LinkedList封装的就是一个链表实现。
面试题:
请问ArrayList与LinkedList有什么区别?
ArrayList是数组实现的集合操作,而LinkedList是链表实现的集合操作;
在使用List集合中的get()方法根据索引获取数据时,ArrayList的时间复杂度为“O(1)”、而LinkedList时间复杂度为“O(n)”(n为集合的长度);
ArrayList在使用时默认的初始化对象数组的大小长度为10,如果空间不足则会采用2倍形式进行容量的扩充,如果保存大数据量的时候有可能会造成垃圾的产生以及性能的下降,但是这时候可以使用LinkedList类保存。
上述内容就是LinkedList子类的作用是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流