我意识到Queue是一个界面。我的问题是这个。我有一个Queue初始化为一个月的每一天的链接列表(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);
我觉得这会给我一个空指针异常?也许不是。任何输入/示例代码都非常感谢。
答案 0 :(得分:2)
数组列表的构造函数采用数字确定列表的初始容量,而不是它的大小。
因此当你这样做时:
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);