java的链表(LinkedList)

Java的LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。
与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修改的操作效率较低。
引用:

import java.util.LinkedList; 

初始化:

LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
//或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表

LinkedList类的增删改查

LinkList类的增加(add、addFirst、addLast)

// 引入 LinkedList 类
import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList<String> animals = new LinkedList<String>();
        //普通添加
        animals.add("cow");
        animals.add("tiger");
        animals.add("rabbit");
        System.out.println("使用add添加动物后:"+animals);
        // 使用 addFirst() 在头部添加元素
        animals.addFirst("mouse");
        System.out.println("使用addFirst添加动物后"+animals);
        animals.addLast("dragon");
        System.out.println("使用addLast添加动物后"+animals);
    }
}

运行结果如下:
在这里插入图片描述

LinkedList类的删除(removeFirst、removeLast)

import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList<String> animals = new LinkedList<String>();
        //普通添加
        animals.add("cow");
        animals.add("tiger");
        animals.add("rabbit");
        System.out.println("使用add添加动物后:"+animals);
        // 使用 addFirst() 在头部添加元素
        animals.addFirst("mouse");
        System.out.println("使用addFirst添加动物后"+animals);
        animals.addLast("dragon");
        System.out.println("使用addLast添加动物后"+animals);
        //删除
        animals.removeFirst();
        System.out.println("使用removeFirst删除动物后"+animals);
        animals.removeLast();
        System.out.println("使用removeLast删除动物后"+animals);
    }
}

执行结果如下:
在这里插入图片描述

ArrayList类的查找(getFirst、getLast、迭代查询)

import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList<String> animals = new LinkedList<String>();
        //普通添加
        animals.add("cow");
        animals.add("tiger");
        animals.add("rabbit");
        System.out.println("使用add添加动物后:"+animals);
        // 使用 addFirst() 在头部添加元素
        animals.addFirst("mouse");
        System.out.println("使用addFirst添加动物后"+animals);
        animals.addLast("dragon");
        System.out.println("使用addLast添加动物后"+animals);
        animals.removeFirst();
        //删除
        System.out.println("使用removeFirst删除动物后"+animals);
        animals.removeLast();
        System.out.println("使用removeLast删除动物后"+animals);
        //查找
        System.out.println("使用getFirst获取到的动物是:"+animals.getFirst());
        System.out.println("使用getLast获取到的动物是:"+animals.getLast());
    }
}

执行结果:
在这里插入图片描述
或者我们使用迭代的方法,查询链表的所有信息,代码如下:

import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList<String> animals = new LinkedList<String>();
        //普通添加
        animals.add("cow");
        animals.add("tiger");
        animals.add("rabbit");
        System.out.println("使用add添加动物后:"+animals);
        // 使用 addFirst() 在头部添加元素
        animals.addFirst("mouse");
        System.out.println("使用addFirst添加动物后"+animals);
        animals.addLast("dragon");
        System.out.println("使用addLast添加动物后"+animals);
        animals.removeFirst();
        //删除
        System.out.println("使用removeFirst删除动物后"+animals);
        animals.removeLast();
        System.out.println("使用removeLast删除动物后"+animals);
        //查找
        System.out.print("使用迭代获取到的动物是:");
        for(int i = 0; i < animals.size(); i++){
        	System.out.print(animals.get(i)+" ");
        }
//        System.out.println("使用getFirst获取到的动物是:"+animals.getFirst());
//        System.out.println("使用getLast获取到的动物是:"+animals.getLast());

        
    }
}

执行结果如下:
在这里插入图片描述
或者用for-each的方式迭代也行,运行结果跟上面一样:

import java.util.LinkedList;

public class LinkedListTest {
    public static void main(String[] args) {
        LinkedList<String> animals = new LinkedList<String>();
        //普通添加
        animals.add("cow");
        animals.add("tiger");
        animals.add("rabbit");
        System.out.println("使用add添加动物后:"+animals);
        // 使用 addFirst() 在头部添加元素
        animals.addFirst("mouse");
        System.out.println("使用addFirst添加动物后"+animals);
        animals.addLast("dragon");
        System.out.println("使用addLast添加动物后"+animals);
        animals.removeFirst();
        //删除
        System.out.println("使用removeFirst删除动物后"+animals);
        animals.removeLast();
        System.out.println("使用removeLast删除动物后"+animals);
        //查找
        System.out.print("使用迭代获取到的动物是:");
        for(String animal : animals){
        	System.out.print(animal+" ");
        }
//        for(int i = 0; i < animals.size(); i++){
//        	System.out.print(animals.get(i)+" ");
//        }
//        System.out.println("使用getFirst获取到的动物是:"+animals.getFirst());
//        System.out.println("使用getLast获取到的动物是:"+animals.getLast());

        
    }
}

LinkedList的常用方法

图片来源于菜鸟教程
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对ArrayList和LinkedList的选择

以下情况使用 ArrayList :

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

  • 你需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐