下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

JAVA程序员提高教程(9)-认识List列表之LinkedList

作者:课课家教育     来源: http://www.kokojia.com点击数:735发布时间: 2016-02-01 14:37:33

标签: javalistjavajava开发

大神带你学编程,欢迎选课

  LinkedList提供了将链接列表用作堆栈、队列或双端队列的方法,这里不再重复介绍 List的标准操作,只给出其独特方法的使用。

  请注意其已经实现的接口

JAVA程序员提高教程(9)-认识List列表之LinkedList_java课程标准_21天学通java_课课家

  Serializable, Cloneable, Iterable, Collection, Deque, List, Queue

  1.package collection.lession9;

  2.

  3.import java.util.Arrays;

  4.import java.util.Iterator;

  5.import java.util.LinkedList;

  6.import java.util.List;

  7.

  8./**

  10. * 实现了双向队列的控制,包括头尾的操作

  11. * 可用于堆栈和FIFO操作等。

  12. *

  14. *

  16. *

  17. */

  18.public class Lession9 {

  19.

  20. public static void main(String[] args) {

  21. // 对于List的基础操作,这里不再重复

  22. // 请自行查看介绍List的内容

  23. // 这里专注于LinkedList所引入的特性部分

  24. //

  25. LinkedList list = new LinkedList();

  26. list.add("1111");

  27. list.add("2222");

  28. list.add("3333");

  29.

  30. showList(list); // [1111, 2222, 3333]

  31.

  32. // 在列表的最头部增加一个

  33. list.addFirst("head");

  34. showList(list); // [head, 1111, 2222, 3333]

  35.

  36. // 测试反向的迭代器

  37. // 正常的迭代器应该是从第一个数据开始

  38. // 这个是从最后一个开始,这也是LinkedList的特点

  39. Iterator it = list.descendingIterator();

  40. while (it.hasNext()) {

  41. System.out.print(it.next() + ","); // 3333,2222,1111,head,

  42. }

  43. System.out.println();

  44.

  45. // 获取列表的第一个数据,且继续保留这个数据

  46. // 内部都是 getFirst,无任何区别

  47. System.out.println(list.element()); // head

  48. System.out.println(list.getFirst()); // head

  49. // 如果长度为0,会返回null,否则和getFirst相同

  50. 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

  []

  总结:

  这个类具有很大的灵活性,也是常用的列表实现类之一。不多说了,总之必须掌握就是了。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程