LinkedList<E>
LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。
栈,先进后出 队列,先进先出
他的父类java.util.AbstractCollection 重写了toString()方法 public String toString() 返回此 collection 的字符串表示形式。 该字符串表示形式由 collection 元素的列表组成, 这些元素按其迭代器返回的顺序排列,并用方括号 ("[]") 括起来。 相邻元素由字符 ", "(逗号加空格)分隔。 通过 String.valueOf(Object) 可以将元素转换成字符串。 覆盖: 类 Object 中的 toString 返回: 此 collection 的字符串表示形式
public void addFirst(E e)及addLast(E e) public E getFirst()及getLast() public E removeFirst()及public E removeLast() public E get(int index);
import java.util.LinkedList;
public class a {
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.addFirst("a");
list.addFirst("b");
list.addFirst("c");
list.addFirst("d");
list.addLast("e");
System.out.println(list);//[d, c, b, a, e]
System.out.println(list.getFirst());//d
System.out.println(list.getLast());//e
System.out.println(list.removeFirst());//d
System.out.println(list.removeLast());//e
System.out.println(list.get(1));//b
System.out.println(list);// [c, b, a]
}
}
用LinkedList模拟栈结构
import java.util.LinkedList;
public class b {
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void main(String[] args) {
LinkedList list = new LinkedList(); //创建集合对象
list.addLast("a");
list.addLast("b");
list.addLast("c");
list.addLast("d");
/*System.out.println(list.removeLast());
System.out.println(list.removeLast());
System.out.println(list.removeLast());
System.out.println(list.removeLast());*/
//d c b a
while(!list.isEmpty()) {
System.out.println(list.removeLast());
}
Stack s = new Stack();
s.in("a"); //进栈
s.in("b");
s.in("c");
s.in("d");
while(!s.isEmpty()) {//判断栈结构是否为空
System.out.println(s.out());//弹栈
}
}
}
stack的封装
import java.util.LinkedList;
public class Stack {
private LinkedList list = new LinkedList();
/*
* 模拟进栈方法
*/
public void in(Object obj) {
list.addLast(obj);
}
/*
* 模拟出栈
*/
public Object out() {
return list.removeLast();
}
/*
* 模拟栈结构是否为空
*/
public boolean isEmpty() {
return list.isEmpty();
}
}