LinkedList实现了双向链表
和双端队列
特点 可以添加任意元素(元素可以重复),包括null 线程不安全,没有实现同步 LinkedList底层维护了一个双向链表 LinkedList中维护了两个属性first
和last
分别指向首节点
和尾节点
每个节点(Node对象
),里面又维护了prev
,next
,item
三个属性,其中通过prev指向前一个,通过next指向后一个节点,最终实现双向链表 所以LinkedList的元素的添加和删除,不是通过数组完成的,相对效率较高
public class LinkedListDemo01 {
public static void main ( String[ ] args) {
Node jack = new Node ( "jack" ) ;
Node tom = new Node ( "tom" ) ;
Node ll = new Node ( "ll" ) ;
jack. next = tom;
tom. next = ll;
ll. prev = tom;
tom. prev = jack;
Node first = jack;
Node last = ll;
while ( true ) {
if ( first == null) {
break ;
}
System. out. println ( first) ;
first = first. next;
}
System. out. println ( "=========" ) ;
while ( true ) {
if ( last == null) {
break ;
}
System. out. println ( last) ;
last = last. prev;
}
System. out. println ( "=========" ) ;
Node java = new Node ( "java" ) ;
java. prev = tom;
java. next = ll;
ll. prev = java;
tom. next = java;
first = jack;
while ( true ) {
if ( first == null) {
break ;
}
System. out. println ( first) ;
first = first. next;
}
}
}
class Node {
public Object item;
public Node next;
public Node prev;
public Node ( Object item) {
this . item = item;
}
@Override
public String toString ( ) {
return "Node name = " + item;
}
}