在collections框架上,Java提供了队列,也可以通过列表进行模拟。队列的独特用途是什么?

在collections框架上,Java提供了队列,也可以通过列表进行模拟。队列的独特用途是什么?,java,collections,queue,Java,Collections,Queue,在collections框架上,Java提供了队列,也可以通过列表进行模拟。队列的独特用途是什么,其他集合框架无法做到 事实上,docs.oracle.com使用的代码片段也指出,这不是一个需要队列的实现。什么是队列的实时实现,可以清楚地解释其适用性 [在下面的示例程序中,队列用于实现倒计时。队列预加载了从命令行上指定的数字到零的所有整数值,按降序排列。然后,从队列中删除这些值,并每隔1秒打印一次。该程序是人工编制的,因为它更自然o在不使用队列的情况下执行相同的操作,但它说明了在后续处理之前使

在collections框架上,Java提供了队列,也可以通过列表进行模拟。队列的独特用途是什么,其他集合框架无法做到

事实上,docs.oracle.com使用的代码片段也指出,这不是一个需要队列的实现。什么是队列的实时实现,可以清楚地解释其适用性

[在下面的示例程序中,队列用于实现倒计时。队列预加载了从命令行上指定的数字到零的所有整数值,按降序排列。然后,从队列中删除这些值,并每隔1秒打印一次。该程序是人工编制的,因为它更自然o在不使用队列的情况下执行相同的操作,但它说明了在后续处理之前使用队列存储元素。]

import java.util.*;

public class Countdown {
    public static void main(String[] args) throws InterruptedException {
        int time = Integer.parseInt(args[0]);
        Queue<Integer> queue = new LinkedList<Integer>();

        for (int i = time; i >= 0; i--)
            queue.add(i);

        while (!queue.isEmpty()) {
            System.out.println(queue.remove());
            Thread.sleep(1000);
        }
    }
}
import java.util.*;
公共课倒计时{
公共静态void main(字符串[]args)引发InterruptedException{
int time=Integer.parseInt(args[0]);
Queue Queue=new LinkedList();
对于(int i=time;i>=0;i--)
加入(i);
而(!queue.isEmpty()){
System.out.println(queue.remove());
睡眠(1000);
}
}
}

一个可能的现实例子可能是
队列
接口在现实中不是很有用,这可能是他们很难想出好例子的原因。该接口更有用,因为它提供了线程间消息传递(例如允许生产者-消费者类型的功能)。谢谢Naman和Kayaman。这给了我一个关于哪些主题需要花更多时间的方向。如中所述,在实践中您很少使用
LinkedList
。当您需要
列表时,当您需要
队列
Deque
(也可以用作堆栈)时,您通常会使用
ArrayList
,您最常使用的是
ArrayQue
。您不会将
ArrayList
用作
队列,因为从前面删除会非常低效。另一方面,
ArrayQue
不提供
列表的直接访问方法。因此,您必须根据使用情况进行选择。一种可能性是现实生活中的例子可能是,
队列
接口在现实中不是很有用,这可能是他们很难想出好例子的原因。该接口更有用,因为它提供了线程间消息传递(例如,允许生产者-消费者类型的功能)。谢谢Naman和Kayaman。这给了我一个关于哪些主题需要花更多时间的方向。如中所述,在实践中您很少使用
LinkedList
。当您需要
列表时,当您需要
队列
Deque
(也可以用作堆栈)时,您通常会使用
ArrayList
,您通常会使用
ArrayDeque
。您不会将
ArrayList
用作
队列,因为从前面删除会非常低效。另一方面,
ArrayDeque
不提供
列表的直接访问方法。因此,您必须根据使用情况进行选择。