文章目录

  • 前言
  • 实现的接口
  • 初始化方法
  • 增加元素
  • 删除元素
  • 修改元素
  • 获取元素
  • 遍历
  • 排序


前言

本文只介绍一些常用方法。主要分成八个部分,实现的接口,初始化方法,增加元素,删除元素,修改元素,查找元素,遍历,排序。更多方法见https://www.jiyik.com/w/java/java-linkedlist LinkedList是一种数据结构,它增删很快,而且我用多少空间,它就开辟出多少空间,LinkedList的底层是用双向链表来实现的

实现的接口

所有已实现的接口:
Serializable, Cloneable, Iterable
Serializable:序列化接口
Cloneable:克隆接口
Iterable:迭代器接口

初始化方法

1、LinkedList() 构造一个空列表。
2、LinkedList(Collection<? extends E> c)构造一个包含指定 collection 中的元素的列表,这些元素按其 collection 的迭代器返回的顺序排列。

增加元素

1、boolean add(E e) 将指定元素添加到此列表的结尾。
2、void add(int index, E element) 在此列表中指定的位置插入指定的元素。
3、 void addFirst(E e)将指定元素插入此列表的开头。
4、void addLast(E e)将指定元素添加到此列表的结尾。
5、boolean addAll(Collection<? extends E> c)添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。
代码示例:

public static void main(String[] args) {
		LinkedList<String> list=new LinkedList<String>();
		list.add("111");
		list.add("222");
		list.add(0,"333");
		list.addFirst("000");
		list.addLast("444");
		LinkedList<String> list2=new LinkedList<String>(list);
		LinkedList<String> list3=new LinkedList<String>();
		list3.addAll(list2);
		System.out.println(list);
		System.out.println(list2);
		System.out.println(list3);
	}

再来看一下输出结果:

[000, 333, 111, 222, 444]
[000, 333, 111, 222, 444]
[000, 333, 111, 222, 444]

删除元素

1、 E remove() 获取并移除此列表的头(第一个元素)。
2、 boolean remove(Object o) 从此列表中移除首次出现的指定元素(如果存在)。
3、 E removeFirst()移除并返回此列表的第一个元素。
4、 boolean removeFirstOccurrence(Object o)从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。
5、 E removeLast()移除并返回此列表的最后一个元素
6、boolean removeLastOccurrence(Object o)从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。
7、 void clear() 代码示例:

public static void main(String[] args) {
		LinkedList<String> list=new LinkedList<String>();
		list.add("111");
		list.add("222");
		list.add("333");
		list.add("444");
		list.add("555");
		list.add("666");
		list.add("777");
		list.add("888");
		System.out.println(list);
		list.remove();
		System.out.println(list);
		list.remove(0);
		System.out.println(list);
		list.remove("333");
		System.out.println(list);
		list.removeFirst();
		System.out.println(list);
		list.removeLast();
		System.out.println(list);
		list.clear();
		System.out.println(list);		
	}

再来看一下输出结果:

[111, 222, 333, 444, 555, 666, 777, 888]
[222, 333, 444, 555, 666, 777, 888]
[333, 444, 555, 666, 777, 888]
[444, 555, 666, 777, 888]
[555, 666, 777, 888]
[555, 666, 777]
[]

修改元素

E set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。

获取元素

1、E get(int index) 返回此列表中指定位置处的元素。
2、E getFirst()返回此列表的第一个元素。
3、E getLast()返回此列表的最后一个元素。
4、int indexOf(Object o)返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
5、int lastIndexOf(Object o)返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1
6、 int size()返回此列表的元素数。
代码示例:

public static void main(String[] args) {
		LinkedList<String> list=new LinkedList<String>();
		list.add("111");
		list.add("222");
		list.add("333");
		list.add("444");
		list.add("555");
		list.add("666");
		list.add("777");
		list.add("888");
		System.out.println(list.get(0));
		System.out.println(list.getFirst());
		System.out.println(list.getLast());
		System.out.println(list.indexOf("111"));
		System.out.println(list.size());
	}

再来看一下输出结果:

111
111
888
0
8

遍历

示例代码:

import java.util.LinkedList;
public class Test {
    public static void main(String[] args) {
        LinkedList<String> list=new LinkedList<String>();
        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        list.add("555");
        list.add("666");
        list.add("777");
        list.add("888");
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+" ");
        }
        // 111 222 333 444 555 666 777 888 
    }
}

排序

代码示例:

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

public class Test {
    public static void main(String[] args) {
        LinkedList<Integer> myNumbers = new LinkedList<Integer>();
        myNumbers.add(33);
        myNumbers.add(15);
        myNumbers.add(20);
        myNumbers.add(34);
        myNumbers.add(8);
        myNumbers.add(12);
        Collections.sort(myNumbers);  // 数字排序
        for (int i : myNumbers) {
            System.out.println(i);
        }
    }
}

输出结果:

8
12
15
20
33
34