LinkedList是Queue的实现类,是双向链表。决定了LinkedList的节点都包含了对前一个和后一个节点的引用。
构造函数
public LinkedList(); ——生成一个空的链表
public LinkedList(Collection<? extends E> c); ——复制构造函数
常用方法及举例
- 添加元素:
boolean add(Object element) —— 将元素添加在链表的最后
boolean add(int index, Object element) —— 将元素添加在指定位置后面
boolean addFirst(Object element) —— 将元素添加在链表的第一个元素的位置
boolean addLast(Object element) —— 将元素添加在链表最后
举例:
package Main;
import java.util.Iterator;
import java.util.LinkedList;
public class Main {
public static void main(String[] args){
LinkedList list = new LinkedList();
list.add(1);
list.add(2);
list.addFirst(0);
list.addLast(4);
list.add(3,3);
Iterator iter = list.iterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
}
结果:
0
1
2
3
4
- 获取链表的元素
E get(int index)——获取索引处的元素
E getFirst()——获取第一个元素
E getLast()——获取第最后一个元素
System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println(list.get(3));
删除元素
E remove()——移除链表中第一个元素
boolean remove(Object o)——移除链表中指定的元素
E remove(int index)——移除链表中该索引处的元素
E removeFirst()——移除链表中第一个元素
E removeLast()——移除链表中最后一个元素
boolean removeFirstOccurrence(Object o)——移除链表中第一次出现所在位置的元素
boolean removeLastOccurrence(Object o)——移除链表中最后一次出现所在位置的元素其他操作
void push(E e)——与add()效果一样
E pop()——与remove()效果一样
E poll()——查询并移除第一个元素
void clear()——清空集合里的所有元素
Object clone()——复制一个集合
boolean contains(Object object)——判断集合是否包含指定元素
indexOf(Object o)——返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
lastIndexOf(Object o)——返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
例子:
LinkedList myList = new LinkedList();
myList.push("a");
myList.push("b");
myList.push("d");
myList.push("e");
myList.push("f");
System.out.println("myList example");
System.out.println(myList.poll());
myList.pop();
System.out.println(myList.indexOf("e"));
System.out.println(myList.contains("e"));
结果:
myList example
f
-1
false
遍历
- 普通的for循环
int size = list.size();
for (int i = 0; i < size; i++) {
System.out.println(list.get(i));
}
- for...each
for (Object j : list) {
System.out.println(j);
}
- 迭代器
for (Iterator<Integer> iter = list.iterator(); iter.hasNext(); ) {
System.out.println(iter.next());
}