LinkedList是一个实现了List接口和Deque接口的双端链表。 LinkedList底层的链表结构使它支持高效的插入和删除操作,另外它实现了Deque接口,使得LinkedList类也具有队列的特性; LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以调用静态类Collections类中的synchronizedList方法:
LinedList维护了一个Node节点对象,实现如下
public class Node {
Node previous;
Object element;
Node next;
public Node(Node previous, Object element, Node next) {
super();
this.previous = previous;
this.element = element;
this.next = next;
}
public Node(Object element) {
super();
this.element = element;
}
}
简单实现
/**
* 自定义LinkedList
* Copyright © 2019 WRF. All rights reserved.
* 功能描述:
* @Package: org.wrf.collections
* @author: knight
* @date: 2019年3月19日 上午11:10:41
*/
public class MyLinkedList {
Node first;
Node last;
public void add(Object obj) {
Node node=new Node(obj);
if(first==null) {//当前节点是第一个节点
first=node;
last=node;
}else {//当前节点不是第一个节点
//初始化节点
node.previous=last;
node.next=null;
//last指针移动
last.next=node;
last=node;
}
}
//重写toString方法
@Override
public String toString() {
StringBuilder sb=new StringBuilder();
Node temp=first;
sb.append("[");
while(temp!=null) {
sb.append(temp.element+",");
temp=temp.next;
}
sb.setCharAt(sb.length()-1,']');
return sb.toString();
}
public static void main(String[] args) {
MyLinkedList myList=new MyLinkedList();
myList.add(1);
myList.add(2);
myList.add(3);
System.out.println(myList)