您好,登录后才能下订单哦!
本篇文章为大家展示了LinkedList子类的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
在List接口中还有一个比较常用的子类:LinkedList,这个类通过名称就可以发现其特点:基于链表的实现。那么首先观察一下LinkedList的定义:
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
LinkedList类的继承关系
范例:使用LinkedList实现集合操作
import java.util.LinkedList;import java.util.List;public class JavaAPIDemo {public static void main(String[] args) throws Exception { List<String> all = new LinkedList<String>();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 Node<E> l = last; final Node<E> 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子类的作用是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。