本文只介绍一些常用方法。主要分成八个部分,实现的接口,初始化方法,增加元素,删除元素,修改元素,查找元素,遍历,排序。更多方法见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