- linkedList底层实现了双向链表和双端队列特点.
- 可以添加任意元素(元素可以重复),包括null。
- 线程是不安全的。没有实现同步。
1)linkedList底层维护了一个双向链表
2)linkedList中维护了两个属性first和last分别指向首节点和尾节点
3)每个节点里面又维护了prev、next、item三个属性,(Node对象)通过next指向后一个节点。prev指向前一个,最终实现双向链表
4)所以linkedList的元素的添加和删除,不是通过数组完成的,相对来说效率较高
package List.linkedList;
import java.util.linkedList;
import java.util.List;
public class linkedList_ {
public static void main(String[] args) {
Node jack = new Node("jack");
Node tom = new Node("tom");
Node lqh = new Node("小陆");
jack.next = tom;
tom.next = lqh;
lqh.pre = tom;
tom.pre = jack;
Node first = jack;//让first引用指向jack,就是双向链表的头结点
Node last = lqh; //让last引用指向hsp,就是双向链表的尾结点
//演示,从头到尾进行遍历
System.out.println("===从头到尾进行遍历===");
while (true) {
if (first == null) {
break;
}
System.out.println(first);
first = first.next;
}
//演示,从尾到头的遍历
System.out.println("====从尾到头的遍历====");
while (true) {
if (last == null) {
break;
}
//输出last 信息
System.out.println(last);
last = last.pre;
}
Node ls = new Node("刘舒");
ls.next = lqh;
tom.next = ls;
lqh.pre = ls;
ls.pre =tom;
first = jack;
System.out.println("===从头到尾进行遍历===");
while (true) {
if(first == null) {
break;
}
//输出first 信息
System.out.println(first);
first = first.next;
}
}
}
//定义一个Node 类,Node 对象 表示双向链表的一个结点
class Node {
public Object item; //真正存放数据
public Node next; //指向后一个结点
public Node pre; //指向前一个结点
public Node(Object name) {
this.item = name;
}
public String toString() {
return "Node name=" + item;
}
}
linkList-CRUD
package List.linkedList;
import javax.xml.transform.Source;
import java.util.Iterator;
import java.util.linkedList;
import java.util.List;
import java.util.WeakHashMap;
public class CRUD {
public static void main(String[] args) {
linkedList list = new linkedList();
//增
list.add(1);
list.add("hello");
list.add('a');
//删
list.remove();// 默认删除第一个
// list.remove(2);
//改
list.set(1, "java");
Object o = list.get(1);
System.out.println(o);
System.out.println(list);
//查
Iterator it = list.iterator();
while (it.hasNext()){
Object next = it.next();
System.out.print(next+" ");
}
}
}



