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