我意识到Queue是一个接口(interface)。我的问题是这样的。我有一个队列初始化为一个月中的每一天(31)的链接列表,我需要排列它们。我在理解泛型问题时遇到问题。我的第一个想法是要么创建一个队列数组(java似乎不喜欢这个)。或者我应该创建一个 Queue 类型的 ArrayList 并将初始大小设置为 32?
如果我这样做,我将如何引用特定队列来向其中添加内容?像这样吗?:
为此,我会说我正在尝试将某人添加到第 17 天的列表中。
ArrayList<Queue<Passenger>> lists = new ArrayList<Queue<Passenger>>(32);
Passenger person = new Passenger(first, last);
(lists.get(17)).add(person);
我觉得这会给我一个空指针异常?也许不是。非常感谢任何输入/示例代码。
最佳答案
接受数字的数组列表的构造函数决定列表的初始容量,而不是它的大小。
因此,当你这样做时:
List<Object> list = new ArrayList<Object>(32);
System.out.println(list.size()); // prints 0!
相反,通过向列表添加对象来初始化列表:
// note that passing 32 here is just an optimization; it tells the list that
// we plan to add 32 elements so that it can pre-allocate the appropriate amount
// of space. We could just as easily have done new ArrayList<Queue<Passenger>>()
List<Queue<Passenger>> queues = new ArrayList<Queue<Passenger>>(32);
for (int i = 0; i < 32; ++i) {
queues.add(new LinkedList<Passenger>());
}
// now this will work
queues.get(17).add(person);
关于java - 如何管理队列/链表的数组/数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623983/