• java编程基础总结——21.LinkedList常见方法及作为栈和队列的使用


     一、LinkedList常见方法

    1. add() 和 addAll()方法

    1. @Test
    2. void test01() {
    3. List ns = new ArrayList<>();
    4. ns.add(1);
    5. ns.add(2);
    6. ns.add(3);
    7. ns.add(4);
    8. ns.add(5);
    9. ns.add(6);
    10. List nums = new LinkedList<>();
    11. nums.add(11);
    12. nums.add(112);
    13. nums.add(0, 123);
    14. nums.addAll(ns);
    15. System.out.println(nums);
    16. }

    1. @Test
    2. void test02() {
    3. List ns = new ArrayList<>();
    4. ns.add(1);
    5. ns.add(2);
    6. ns.add(3);
    7. ns.add(4);
    8. ns.add(5);
    9. ns.add(6);
    10. List nums = new LinkedList<>();
    11. nums.add(11);
    12. nums.add(112);
    13. nums.add(0, 123);
    14. ns.addAll(nums);
    15. System.out.println(ns);
    16. }

    2. subList()方法 

    注意:前闭后开区间

    1. @Test
    2. void test03() {
    3. List nums = new LinkedList<>();
    4. nums.add(11);
    5. nums.add(112);
    6. nums.add(1122);
    7. nums.add(1128);
    8. nums.add(1129);
    9. nums.add(0, 123);
    10. System.out.println(nums);
    11. System.out.println(nums.size());
    12. // 切割一个全新的子列表
    13. System.out.println(nums.subList(1, 3));
    14. nums.forEach(new MyConsumer());
    15. }

     

    二、LinkedList作为栈的使用

    LinkedList不仅仅是一个简单的双向链表
    同时也是一种栈
    FILO 先进后出的栈

    1. @Test
    2. void testLinkedListAsStack() {
    3. LinkedList nums = new LinkedList<>();
    4. // 推入栈中
    5. nums.push(1230);
    6. nums.push(456);
    7. nums.push(789);
    8. nums.push(852);
    9. nums.push(147);
    10. nums.push(123654);
    11. System.out.println(nums);
    12. // 弹出栈
    13. System.out.println(nums.pop());
    14. System.out.println(nums.pop());
    15. System.out.println(nums.pop());
    16. System.out.println(nums.peek());
    17. System.out.println(nums.size());
    18. }

     

     

    三、LinkedList作为队列的使用

    LinkedList不仅仅是一个简单的双向链表
    同时也是一种队列;
    FIFO 先进先出的队列

    boolean offer(E e) :将指定元素添加到此列表的末尾(最后一个元素)
    E poll() :获取并移除此列表的头(第一个元素)
    E element() :获取但不移除此列表的头(第一个元素)
    1. @Test
    2. void testLinkedListAsQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // 添加到队列中
    5. nums.offer(1230);
    6. nums.offer(456);
    7. nums.offer(789);
    8. nums.offer(852);
    9. nums.offer(147);
    10. System.out.println(nums);
    11. // 出队列
    12. System.out.println(nums.poll());
    13. System.out.println(nums.poll());
    14. System.out.println(nums.poll());
    15. // 看一看第一个队列顶部元素是什么
    16. System.out.println(nums.element());
    17. System.out.println(nums.size());
    18. }

     

     四、LinkedList作为双端队列的使用

    LinkedList 也可以作为双端队列

    void addFirst(E e) :将指定元素插入此列表的开头。
    void addLast(E e) :将指定元素添加到此列表的结尾。
    E removeFirst() :移除并返回此列表的第一个元素。
    E removeLast() :移除并返回此列表的最后一个元素。
    E getFirst() :返回此列表的第一个元素。
    E getLast() :返回此列表的最后一个元素。
    boolean offerFirst(E e) :在此列表的开头插入指定的元素。
    boolean offerLast(E e) :在此列表的末尾插入指定的元素。
    E pollFirst() :获取并移除此列表的第一个元素;如果此列表为空,则返回 null
    E pollLast() :获取并移除此列表的最后一个元素;如果此列表为空,则返回 null
    E peekFirst() :获取但不移除此列表的第一个元素;如果此列表为空,则返回 null  
    E peekLast() :获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null

     

    前六个方法的作用和后六个作用一样,不同之处在于,前六个失败会抛出异常,后面的是返回boolean或者返回null来表示

    1.  addFirst、 addLast、 removeFirst、 removeLast()
    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // 头部添加元素
    5. nums.addFirst(123);
    6. nums.addFirst(456);
    7. // 尾部添加元素
    8. nums.addLast(789);
    9. nums.addLast(159);
    10. System.out.println(nums);
    11. //移除第一个,最后一个元素
    12. System.out.println(nums.removeFirst());
    13. System.out.println(nums.removeLast());
    14. System.out.println(nums);
    15. }

     2. getFirst、getLast

    1)、正常情况

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // 头部添加元素
    5. nums.addFirst(123);
    6. nums.addFirst(456);
    7. // 尾部添加元素
    8. nums.addLast(789);
    9. nums.addLast(159);
    10. System.out.println(nums);
    11. // 获取队列的头尾
    12. System.out.println(nums.getFirst());
    13. System.out.println(nums.getLast());
    14. System.out.println(nums);
    15. }

    2)、元素为空,无返回值,就只能抛异常

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // 获取队列的头尾
    5. System.out.println(nums.getFirst());
    6. System.out.println(nums.getLast());
    7. System.out.println(nums);
    8. }

    3.offerFirst、offerLast

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // 头部添加元素
    5. nums.addFirst(123);
    6. nums.addFirst(456);
    7. // 尾部添加元素
    8. nums.addLast(789);
    9. nums.addLast(159);
    10. System.out.println(nums);
    11. // 返回布尔值类来表示是否成功
    12. System.out.println(nums.offerFirst(1));
    13. System.out.println(nums.offerLast(1));
    14. System.out.println(nums);
    15. }

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // 返回布尔值类来表示是否成功
    5. System.out.println(nums.offerFirst(1));
    6. System.out.println(nums.offerLast(1));
    7. System.out.println(nums);
    8. }

     

     4. pollFirst、pollLast

    1)、正常情况

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // LinkedList 也可以作为双端队列
    5. // 头部添加元素
    6. nums.addFirst(123);
    7. nums.addFirst(456);
    8. nums.addLast(789);
    9. nums.addLast(159);
    10. System.out.println(nums.pollFirst());
    11. System.out.println(nums.pollLast());
    12. }

     

     

    2)、元素为空,返回失败,则返回null来表示

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // 如果失败,则返回null来表示,否则返回删除的元素
    5. System.out.println(nums.pollFirst());
    6. System.out.println(nums.pollLast());
    7. }

     

    5. peekFirst、peekLast

    1)、正常情况

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. // LinkedList 也可以作为双端队列
    5. // 头部添加元素
    6. nums.addFirst(123);
    7. nums.addFirst(456);
    8. nums.addLast(789);
    9. nums.addLast(159);
    10. System.out.println(nums.peekFirst());
    11. System.out.println(nums.peekLast());
    12. }

     

    2)、元素为空,返回失败,则返回null来表示

    1. @Test
    2. void testLinkedListAsDeQueue() {
    3. LinkedList nums = new LinkedList<>();
    4. System.out.println(nums.peekFirst());
    5. System.out.println(nums.peekLast());
    6. }

  • 相关阅读:
    磁盘存储器
    【CNN-FPGA开源项目解析】卷积层01--floatMult16模块
    Springboot科研项目申报网站设计6109r计算机毕业设计-课程设计-期末作业-毕设程序代做
    搜索关键词标红组件
    C语言版:统计1-2019范围中出现数字9的个数
    瑞芯微rk3568移植openbmc(三)
    ViewPager2+SmartRefreshLayout
    计算机毕业设计之java+springboot基于vue的篮球竞赛预约平台
    在Python中求解定积分scipy.integrate.quad()方法
    兴智杯 多模态检索赛道比赛总结
  • 原文地址:https://blog.csdn.net/m0_58679504/article/details/126200595