链表
在了解LinkedList之前,我们需要了解一下什么是链表:
假设我们有这样一条"路径",那我们就称为它就是一条链表,直接上代码:
public class Node {
public Node next;
public Object element;
}
这就是一个最简单的链表,将图片中的一个圆圈看成一个对象,这个对象中有一个成员属性next和一个存值的element。
双向链表
在链表的基础上我们再加一个成员属性prev用来指向上一个结点对象,就形成了双向链表。
public Node prev;
LinkedList和ArrayList却别
这两家伙明明是兄弟,却像对冤家,同样的继承了List接口,个性却完全不同。
书本上我们看到:
ArrayList是一个不定长的数组。查找和随机访问效率高。有序,唯一,可为null
LinkedList是一个双向链表。修改删除效率高。有序,不唯一,可为null
但我认为,在删除这方面,谁快还不好说。
安全性:
LinkedList是线程非安全的
打开源码第一行就看的出来,有一个带有状态的size属性,并且用到这个size的方法没有synchronized锁。它就是非线程安全的。
添加元素
LinkedList linkedList = new LinkedList();
linkedList.add("张三");
linkedList.add("李四");
linkedList.add("王五");
遍历元素
for (int i = 0; i < linkedList.size(); i++) {
System.out.println(linkedList.get(i));
}