何时使用队列 over arraylist
在 ArrayList 上使用队列的一个基本参数是队列保证 FIFO 行为。
但是,如果我向 ArrayList 中添加 10 个元素,然后从第 0 个元素开始循环访问这些元素,那么我将按照添加元素的相同顺序检索这些元素。因此,从本质上讲,这保证了FIFO行为。
与传统的 ArrayList 相比,Queue 有什么特别之处?
在 ArrayList 上使用队列的一个基本参数是队列保证 FIFO 行为。
但是,如果我向 ArrayList 中添加 10 个元素,然后从第 0 个元素开始循环访问这些元素,那么我将按照添加元素的相同顺序检索这些元素。因此,从本质上讲,这保证了FIFO行为。
与传统的 ArrayList 相比,Queue 有什么特别之处?
你可以在这里看看javadoc。主要区别在于,您可以随时查看任何元素。队列只允许您查看“下一个”队列。List
把它想象成一个真正的队列,或者作为杂货店收银机的一条线。你不会要求中间或最后的人支付下一个,你总是问那些在前面/等待时间最长的人。
值得注意的是,有些列表是队列。例如,看看LinkedList。
如果我给你一个实例,那么你就会知道,通过迭代调用,你可以按FIFO顺序检索元素。如果我给你一个实例,那么你无法做出这样的保证。Queue
remove()
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顺序的元素。
另外,我想说另一个区别是抽象。使用实例,您不必担心索引,如果您不需要提供的所有内容,这将使事情更容易考虑。Queue
ArrayList