如何管理队列/链接列表的数组/ arraylist?

时间:2014-03-25 01:45:43

标签: java arrays arraylist

我意识到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);

我觉得这会给我一个空指针异常?也许不是。任何输入/示例代码都非常感谢。

1 个答案:

答案 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);