老紫竹JAVA提高教程(9)-认识List列表之LinkedList
|
zhaoxq
老紫竹 ![]()
管理员
|
1 # 大 中 小 发表于 2008-11-21 07:47:55
LinkedList提供了将链接列表用作堆栈、队列或双端队列的方法,这里不再重复介绍List的标准操作,只给出其独特方法的使用。
请注意其已经实现的接口 Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E> package collection.lession9;
import java.util.Arrays;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
/**
* 老紫竹JAVA提高教程(6)-认识List列表之LinkedList<br>
* 实现了双向队列的控制,包括头尾的操作<br>
* 可用于堆栈和FIFO操作等。 <br>
* <br>
* 相关API请查看 api.java2000.net/LinkedList
*
* @author 老紫竹 JAVA世纪网(java2000.net)
*
*/
public class Lession9 {
public static void main(String[] args) {
// 对于List的基础操作,这里不再重复
// 请自行查看介绍List的内容
// 这里专注于LinkedList所引入的特性部分
//
LinkedList<String> list = new LinkedList<String>();
list.add("1111");
list.add("2222");
list.add("3333");
showList(list); // [1111, 2222, 3333]
// 在列表的最头部增加一个
list.addFirst("head");
showList(list); // [head, 1111, 2222, 3333]
// 测试反向的迭代器
// 正常的迭代器应该是从第一个数据开始
// 这个是从最后一个开始,这也是LinkedList的特点
Iterator<String> it = list.descendingIterator();
while (it.hasNext()) {
System.out.print(it.next() + ","); // 3333,2222,1111,head,
}
System.out.println();
// 获取列表的第一个数据,且继续保留这个数据
// 内部都是 getFirst,无任何区别
System.out.println(list.element()); // head
System.out.println(list.getFirst()); // head
// 如果长度为0,会返回null,否则和getFirst相同
System.out.println(list.peek()); // head
System.out.println(list.peekFirst()); // head
// 获取列表的最后一个数据,且继续保留这个数据
System.out.println(list.getLast()); // 3333
// 如果长度为0,会返回null,否则和getLast相同
System.out.println(list.peekLast()); // 3333
// 在列表末尾增加一个数据
list.offer("tail");
showList(list); // [head, 1111, 2222, 3333, tail]
// 在列表最前面增加一个数据
// 内部通过 addFirst 实现的
list.offerFirst("----");
showList(list); // [----, head, 1111, 2222, 3333, tail]
// 在列表末尾增加一个数据
// 内部通过 addLast实现的
list.offerLast("====");
showList(list); // [----, head, 1111, 2222, 3333, tail, ====]
// 获取列表的第一个数据,并从删除这个数据
System.out.println(list.poll()); // ----
System.out.println(list.pollFirst()); // head
// 获取列表的最后一个数据,并从删除这个数据
System.out.println(list.pollLast()); // ====
// 以堆栈的形式存入一个数据
// 将该元素插入此列表的开头
// 内部通过 addFirst实现
list.push("xyz");
showList(list); // [xyz, 1111, 2222, 3333, tail]
// 以堆栈的形式弹出一个数据
// 移除并返回第一个数据
// 内部通过 removeFirst 实现
System.out.println(list.pop()); // xyz
showList(list); // [1111, 2222, 3333, tail]
// 删除并返回第一个数据
System.out.println(list.removeFirst()); // 1111
showList(list); // [2222, 3333, tail]
// 删除列表中第一次出现的这个数据
// 内部通过 remove(Object)实现
System.out.println(list.removeFirstOccurrence("3333")); // true
showList(list); // [2222, tail]
// 删除并返回最后一个数据
System.out.println(list.removeLast()); // tail
showList(list); // [2222]
// 删除列表中最后一次出现的这个数据
System.out.println(list.removeLastOccurrence("2222")); // true
showList(list); // []
}
/**
* 显示List里面的数据。
*
* @param list
*/
private static void showList(List list) {
System.out.println(Arrays.toString(list.toArray()));
}
}
运行结果 [1111, 2222, 3333] [head, 1111, 2222, 3333] 3333,2222,1111,head, head head head head 3333 3333 [head, 1111, 2222, 3333, tail] [----, head, 1111, 2222, 3333, tail] [----, head, 1111, 2222, 3333, tail, ====] ---- head ==== [xyz, 1111, 2222, 3333, tail] xyz [1111, 2222, 3333, tail] 1111 [2222, 3333, tail] true [2222, tail] tail [2222] true [] 总结: 这个类具有很大的灵活性,也是常用的列表实现类之一。不多说了,总之必须掌握就是了。
快乐渡过每一天,减肥坚持每一天
|
|||||
|




