• LinkedList集合


    一、java常见集合:

     

    二、LinkedList实现关系:

     

    三、LinkedList造型为Queue:

    3.1.简介:

    LinkedList造型为Queue表示将LinkedList用作队列:

    队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

    队列类似于 人排队(先加入到队列中的元素 会先被取出)

    3.2.常用 方法:

     

    推荐使用黄框内方法

    队列提供的所有方法都以两种形式存在:

    • 一种是当操作失败时抛异常,

    • 另一种是返回一个null或者false(返回一个特定的值,取决于具体操作)。

    案例:

        public static void main(String[] args) {    
            Queue que = new LinkedList();
            //1.给队列que的末尾添加元素
            que.offer(0);
            que.offer(1);
            que.offer(2);
            System.out.println(que);//输出结果:[0, 1, 2]
    ​
            //2.从que队列首部取出某个元素 (而不从队列中删除它)
            System.out.println(que);//输出结果:[0, 1, 2]
            int top = que.peek();
            System.out.println("top=" + top);//输出结果:top=0
            System.out.println(que);//输出结果:[0, 1, 2]
    ​
            //3.从que队列首部取出某个元素 并从队列中删除它,(如果此队列为空,则返回null)
            System.out.println(que);
            int top = que.poll();
            System.out.println("top = "+top);
            System.out.println(que);
        }
    ​

    其它

    add()、element()、remove()方法与offer()、peek()、poll()目的相同,但是仍有区别。

    • offer(),add() 区别:

    一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。

    • poll(),remove() 区别:

    remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。

    • peek(),element()区别:

    element() 和 peek() 是在队首取元素。与 remove() 类似,队列为空时 element() 会抛异常,而 peek会返回 null

    四、LinkedList造型为Deque:

    4.1.LinkedList造型为Deque,可以当做双端队列使用

    Deque是double ended queue,将其理解成双端结束的队列,双端队列,队首和队尾都可以插入或删除元素。

    public stataic void main(String[] args){    
        Deque deque = new LinkedList();//定义
        deque.addFirst(2);  //在队列头部添加
        deque.pollFirst();  //删除头部第一个元素(等价于poll())
        deque.peekFirst();  //获取头部第一个元素(等价于peek())
    ​
        deque.addLast(1);   //在队列尾部添加(等价于add())
        deque.pollLast();   //删除尾部第一个元素
        deque.peekLast();   //获取尾部第一个元素
    }
    ​

     

    4.2.LinkedList造型为Deque,可以当做栈使用

    Queue接口中还规定了栈的方法比如push()和pop()及peekFirst()和pollFirst() (Java官方推荐大家用LinkedList作为栈使用,不推荐Stack)

    public stataic void main(String[] args){
            Deque stack=new LinkedList<>();
            System.out.println("栈为空:"+stack.isEmpty());   //判断栈是否为空
            stack.addFirst(12);//向栈中存入元素(压栈)
            System.out.println("栈为空:"+stack.isEmpty());   //判断栈是否为空
            System.out.println(stack.peekFirst());   //获取栈顶元素
            System.out.println(stack.pollFirst());   //获取并移除栈顶元素
            System.out.println("栈为空:"+stack.isEmpty());   //判断栈是否为空
            //注意:压栈和出栈还可以调push和pop方法
            //pop(): 弹出栈中元素,也就是返回并移除队头元素,等价于removeFirst(),如果队列无元素,则发生NoSuchElementException
            //push(): 向栈中压入元素,也就是向队头增加元素,等价于addFirst(),如果元素为null,则发生NPE,
            //如果栈空间受到限制,push()会发生IllegalStateException
    ​
     }
     
    ​

    其他:

    ArrayDeque: 基于数组实现的线性双向队列,通常作为栈或队列使用,但是栈的效率不如LinkedList高。 LinkedList: 基于链表实现的链式双向队列,通常作为栈或队列使用,但是队列的效率不如ArrayQueue高。


    zhaoYQ 2022-09-30 10:49

  • 相关阅读:
    java计算机毕业设计高校学生党建管理系统源码+mysql数据库+系统+lw文档+部署
    流程图设计制作都有哪些好用的工具
    Java中的TreeMap[78]
    力扣 100. 相同的树 java
    fastadmin/thinkPHPQueue消息队列详细教程
    Torch截断一部分后是否能梯度回传
    MCE | HPV 疫苗要不要打?
    leetcode分类刷题:栈(Stack)(一、字符串相邻元素删除类型)
    Unity3D :使用 UXML 实例作为模板
    python wechat --- 企业微信机器人API
  • 原文地址:https://blog.csdn.net/gulanga5/article/details/127127598