Java基础知识讲解-LinkedList类

96 阅读2分钟

1、介绍

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。

链表可分为单向链表和双向链表。

一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。
一个双向链表有三个整数值: 数值、向后的节点链接、向前的节点链接。
与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。
适用情况:

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

2、使用

导入LinkedList包:

import java.util.LinkedList;

初始化:

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

3、功能函数

(1)添加元素
import java.util.LinkedList;
public class Main
{
	public static void main(String[] args) {
		LinkedList<Integer> list=new LinkedList<Integer>();
		list.add(1);
		list.add(2);
		list.addFirst(0);//在头部添加
		list.addLast(3);//在尾部添加
		
		System.out.println(list);
	}
}
[0, 1, 2, 3]
(2)在尾部移除元素
import java.util.LinkedList;
public class Main
{
	public static void main(String[] args) {
		LinkedList<Integer> list=new LinkedList<Integer>();
		list.add(1);
		list.add(2);
		list.addFirst(0);//在头部添加
		list.addLast(3);//在尾部添加
		
		System.out.println(list);
		list.removeLast();//在尾部移除
		System.out.println(list);
	}
}
[0, 1, 2, 3]
[0, 1, 2]
(3)获取元素
import java.util.LinkedList;
public class Main
{
	public static void main(String[] args) {
		LinkedList<Integer> list=new LinkedList<Integer>();
		list.add(1);
		list.add(2);
		list.addFirst(0);//在头部添加
		list.addLast(3);//在尾部添加
		
		System.out.println(list);
		System.out.println(list.getFirst());//头部
		System.out.println(list.getLast());//尾部
	}
}
[0, 1, 2, 3]
0
3

4、遍历元素

import java.util.LinkedList;
public class Main
{
	public static void main(String[] args) {
		LinkedList<Integer> list=new LinkedList<Integer>();
		list.add(1);
		list.add(2);
		list.addFirst(0);//在头部添加
		list.addLast(3);//在尾部添加
		
		System.out.println(list);
		for(int i=0;i<list.size();i++)
		{
		    System.out.println(list.get(i));
		}
		for(int i:list)
		{
		    System.out.println(i);
		}
	}
}
[0, 1, 2, 3]
0
1
2
3
0
1
2
3

5、其他函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实例:

import java.util.LinkedList;
public class Main
{
	public static void main(String[] args) {
		LinkedList<Integer> list=new LinkedList<Integer>();
		list.add(1);
		list.add(2);
		list.addFirst(0);//在头部添加
		list.addLast(3);//在尾部添加
		list.add(2,4);//在指定位置添加
		
		list.add(4);//添加到链表末尾
		System.out.println(list);
		System.out.println(list.indexOf(4));//从左往右元素第一次出现的索引
		System.out.println(list.lastIndexOf(4));//从左往右元素最后一次出现的索引
	}
}
[0, 1, 4, 2, 3, 4]
2
5