LinkedList底层结构
1.LinkedList底层实现双向链表和双端队列特点
2.可以添加任意元素(元素可以重复),包括null
3.线程不安全,没有实现同步
二。Linkedlist的底层操作机制
1.LinkedList底层维护了一个双向链表。
2.LinkedList中维护两个属性first和last分别指向首节点和尾节点
3.每个节点(Node对象),里面又维护prev,next,item三个属性,其中通过prev指向前一个,通过next指向后一个节点。最终实现双向链表。
4.所以LInkedList的元素添加和删除,不是通过数组完成的,相对来说效率较高

package 集合.List;public class LinkedList01 {public static void main(String[] args) {//模拟简答的双向链表Node jack = new Node("jack");Node tom = new Node("tom");Node yq = new Node("yq");//连接三个结点,形成双向链表//jack->tom->yqjack.next = tom;tom.next = yq;//yq->tom->jackyq.pre = tom;tom.pre = jack;Node first = jack;//让first引用指向jack,就是双向链表的头结点Node last = yq;//让last引用指向yq,就是双向链表的尾节点//从头到尾进行遍历System.out.println("***从头到尾进行遍历***");while(true){if (first == null){break;}//输出first信息System.out.println(first);first= first.next;}//从尾到头进行遍历System.out.println("***从尾到头进行遍历***");while (true){if (last == null){break;}//输出last信息System.out.println(last);last = last.pre;}//双向链表添加对象、数据。//在tom 和 yq之间插入一个 张三//先创建一个Node结点,name就是张三Node zhangSan = new Node("张三");//下面把张三接入到双向链表zhangSan.next = yq;zhangSan.pre=tom;yq.pre = zhangSan;tom.next = zhangSan;//让first再次指向jackfirst = jack;System.out.println("***从头到尾进行遍历***");while(true){if (first == null){break;}//输出first信息System.out.println(first);first= first.next;}//让last再次指向yqlast = yq;//从尾到头进行遍历System.out.println("***从尾到头进行遍历***");while (true){if (last == null){break;}//输出last信息System.out.println(last);last = last.pre;}}
}
//定义一个Node 类,Node 对象 表示双向链表的一个结点
class Node{public Object item;//存放数据public Node next;//指向后一个结点public Node pre;//指向前一个结点public Node (Object name){this.item = name;}@Overridepublic String toString() {return "NodeName="+item;}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
