何时使用队列 over arraylist

2022-09-01 20:31:48

在 ArrayList 上使用队列的一个基本参数是队列保证 FIFO 行为。

但是,如果我向 ArrayList 中添加 10 个元素,然后从第 0 个元素开始循环访问这些元素,那么我将按照添加元素的相同顺序检索这些元素。因此,从本质上讲,这保证了FIFO行为。

与传统的 ArrayList 相比,Queue 有什么特别之处?


答案 1

你可以在这里看看javadoc。主要区别在于,您可以随时查看任何元素。队列只允许您查看“下一个”队列。List

把它想象成一个真正的队列,或者作为杂货店收银机的一条线。你不会要求中间或最后的人支付下一个,你总是问那些在前面/等待时间最长的人。

值得注意的是,有些列表是队列。例如,看看LinkedList


答案 2

如果我给你一个实例,那么你就会知道,通过迭代调用,你可以按FIFO顺序检索元素。如果我给你一个实例,那么你无法做出这样的保证。Queueremove()ArrayList

以下代码为例:

        ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(5);
    list.add(4);
    list.add(3);
    list.add(2);
    list.add(1);


    list.set(4,5);
    list.set(3,4);
    list.set(2,3);
    list.set(1,2);
    list.set(0,1);

    System.out.println(list);

如果我现在给你这个列表,那么我从0到4的迭代你不会得到FIFO顺序的元素。

另外,我想说另一个区别是抽象。使用实例,您不必担心索引,如果您不需要提供的所有内容,这将使事情更容易考虑。QueueArrayList


推荐