简介

  1. LinkedList 底层用双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全。 双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向前 一个节点和后一个节点。 所以,从双向链表中的任意一个节点开始,都可以很方便地找到 所有节点
class Node<E>{
    E item;
    Node<E> next;
    Node<E> prev;
 }

LinkedList的使用(List标准)

LinkedList 实现了 List 接口,所以 LinkedList 是具备 List 的存储特征的(有序,元素有重复)

import java.util.LinkedList;
import java.util.List;

public class LinkedListTest {
    public static void main(String[] args) {
        //linkedlist实现于list类
        List<String> list =new LinkedList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("a");

        for(String str:list){
            System.out.println(str);
        }
    }
}

image.png

LinkedList的使用(非List标准)

image.pngimage.png

System.out.println("-------LinkedList-------------");
//非List标准,用LinkedList自身实例化
LinkedList<String> linkedList1 = new LinkedList<>();

linkedList1.addFirst("a");
linkedList1.addFirst("b");
linkedList1.addFirst("c");
for (String str:linkedList1){
System.out.println(str);
}

System.out.println("----------------------");
LinkedList<String> linkedList = new LinkedList<>();
linkedList.addLast("a");
linkedList.addLast("b");
linkedList.addLast("c");
for (String str:linkedList){
System.out.println(str);
}

System.out.println("---------------------------");
System.out.println(linkedList.getFirst());
System.out.println(linkedList.getLast());

System.out.println("-----------------------");
linkedList.removeFirst();
linkedList.removeLast();
for (String str:linkedList){
System.out.println(str);
}

System.out.println("-----------------------");
linkedList.addLast("c");
linkedList.pop();
for (String str:linkedList){
System.out.println(str);
}

System.out.println("-------------------");
linkedList.push("h");
for (String str:linkedList){
System.out.println(str);
}
System.out.println(linkedList.isEmpty());