linkedlist的使用过程主要要注意下面几点
1)linkedlis允许插入null节点
2)删除元素最后基于迭代器操作,可以保障并发安全
3)使用Collections.sort方法对list排序时,在没有比较器的情况下,元素必须非空且可排序,在有比较器的情况下,若比较器考虑了元素为空的情况,则null元素可参与排序
4)可以使用linkedlist实现stack和queue的功能
package com.basic.util;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class BasicLinkedArrayList {
public static void main(String[] args) {
Stack<String> s = new Stack<String>();
s.push("1");
s.push("2");
s.push("3");
s.push(null);
// 获取栈顶元素
System.out.println(s.peek());
queue<Integer> q = new queue<Integer>();
q.offer(1);
q.offer(2);
q.offer(3);
// 获取队列头元素
System.out.println(q.peek());
List<Integer> list = new LinkedList<Integer>();
list.add(1);
list.add(3);
list.add(2);
list.add(3);
list.add(5);
// 列表排序
Collections.sort(list);
// 基于iter删除元素,并发安全
Iterator<Integer> iter = list.iterator();
while (iter.hasNext()) {
Integer i = iter.next();
if (i.intValue() == 3) {
iter.remove();
}
}
}
}
class Stack<E> {
private final LinkedList<E> contains = new LinkedList<E>();
public boolean isEmpty() {
return this.contains.isEmpty();
}
public void push(E e) {
this.contains.addFirst(e);
}
public E pop() {
return this.contains.pollFirst();
}
public E peek() {
return this.contains.peekFirst();
}
}
class queue<E> {
private final LinkedList<E> contains = new LinkedList<E>();
public void offer(E e) {
this.contains.addFirst(e);
}
public E poll() {
return this.contains.pollLast();
}
public E peek() {
return this.contains.peekLast();
}
}