当前位置:   article > 正文

Java集合Collection之LinkedList

Java集合Collection之LinkedList

LinkeList

        LinkedList(双向链表)是一种常见的线性数据结构,但是并不会按线性的顺序存储数据。它由一系列节点组成,每个节点包含数据部分和一个指向下一个节点的引用。相比于数组,链表具有动态大小、插入和删除效率高的优点,但访问元素的效率较低。


一、应用场景

1.设计队列

如下是一个排队叫号的小例子:

  1. //应用场景1:排队叫号
  2. LinkedList<String> queue = new LinkedList<>();
  3. //开始排队
  4. queue.addLast("1号病人");
  5. queue.addLast("2号病人");
  6. queue.addLast("3号病人");
  7. queue.addLast("4号病人");
  8. queue.addLast("5号病人");
  9. System.out.println(queue);
  10. //开始出队
  11. //1号看完病
  12. System.out.println(queue.removeFirst());
  13. //2号看完病
  14. System.out.println(queue.removeFirst());
  15. //3号看完病
  16. System.out.println(queue.removeFirst());
  17. //6号挂号开始排队
  18. queue.addLast("6号病人");
  19. System.out.println(queue);
  20. 结果:
  21. [1号病人, 2号病人, 3号病人, 4号病人, 5号病人]
  22. 1号病人
  23. 2号病人
  24. 3号病人
  25. [4号病人, 5号病人, 6号病人]

2.设计栈

场景如下:

  1. //应用场景2:设计栈【先进后出,后进先出】
  2. System.out.println("----------------应用场景2---------------");
  3. LinkedList<String> stack = new LinkedList<>();
  4. stack.addFirst("1号子弹");
  5. stack.addFirst("2号子弹");
  6. stack.addFirst("3号子弹");
  7. stack.addFirst("4号子弹");
  8. stack.addFirst("5号子弹");
  9. stack.addFirst("6号子弹");
  10. System.out.println(stack);
  11. System.out.println("发射子弹了哈");
  12. System.out.println(stack.removeFirst());
  13. System.out.println(stack.removeFirst());
  14. System.out.println(stack.removeFirst());
  15. System.out.println(stack);

这里用到了LinkedList两个独有的方法,removeFirst()和addFirst(),其实这两个方法可以用pop(出栈)和push(进栈)来操作,修改后如下:

  1. //应用场景2:设计栈【先进后出,后进先出】
  2. System.out.println("----------------应用场景2---------------");
  3. LinkedList<String> stack = new LinkedList<>();
  4. stack.push("1号子弹");
  5. stack.push("2号子弹");
  6. stack.push("3号子弹");
  7. stack.push("4号子弹");
  8. stack.push("5号子弹");
  9. stack.push("6号子弹");
  10. System.out.println(stack);
  11. System.out.println("发射子弹了哈");
  12. System.out.println(stack.pop());
  13. System.out.println(stack.pop());
  14. System.out.println(stack.pop());
  15. System.out.println(stack);

效果结果均一样,这是因为push的底层就是addFirst(),pop的底层就是removeFirst():

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/301776
推荐阅读
相关标签
  

闽ICP备14008679号