博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java LinkedList
阅读量:367 次
发布时间:2019-03-04

本文共 2122 字,大约阅读时间需要 7 分钟。

  • LinkedList实现了双向链表和双端队列特点
  • 可以添加任意元素(元素可以重复),包括null
  • 线程不安全,没有实现同步
  • LinkedList底层维护了一个双向链表
  • LinkedList中维护了两个属性firstlast分别指向首节点尾节点
  • 每个节点(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 => tom => ll jack.next = tom; tom.next = ll; // ll => tom => jack ll.prev = tom; tom.prev = jack; // 让first引用指向jack,也就是双向链表的首节点 Node first = jack; // 让last引用指向ll,也就是双向链表的尾结点 Node last = ll; // 演示从头到尾进行遍历 while (true) {
if (first == null) {
break; } //输出first信息 System.out.println(first); first = first.next; } System.out.println("========="); // 从尾到头遍历 while (true) {
if (last == null) {
break; } // 输出end信息 System.out.println(last); last = last.prev; } System.out.println("========="); // 演示链表添加对象/数据,是多么快速方便 // 要求在 tom和ll之间,插入一个对象java // 1.创建对象 Node java = new Node("java"); // jack => tom => ll java.prev = tom; java.next = ll; ll.prev = java; tom.next = java; // 让first引用指向jack,也就是双向链表的首节点 first = jack; // 演示从头到尾进行遍历 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 prev; public Node(Object item) {
this.item = item; } @Override public String toString() {
return "Node name = " + item; }}

转载地址:http://ihce.baihongyu.com/

你可能感兴趣的文章