LinkedLists的ArrayList引用LinkedLists

时间:2013-11-22 16:50:09

标签: java

我以下列方式创建了LinkedLists的arraylist:

ArrayList<LinkedList<Card>> list = new ArrayList<>(5);

然后我需要将链接列表添加到arrayList,所以我这样做了,这似乎不起作用,因为ArrayList保持空白

for (position = 0; position < list.size(); position++) {
list.add(new LinkedList<Card>());
}

然后我通过给出LinkedLists引用手动将linkedLists添加到arrayList:

        LinkedList<Card> temp_list0 = new LinkedList<Card>();
        LinkedList<Card> temp_list1 = new LinkedList<Card>();
        LinkedList<Card> temp_list2 = new LinkedList<Card>();
        LinkedList<Card> temp_list3 = new LinkedList<Card>();
        LinkedList<Card> temp_list4 = new LinkedList<Card>();
        list.add(temp_list0);
        list.add(temp_list1);
        list.add(temp_list2);
        list.add(temp_list3);
        list.add(temp_list4);

最后,虽然每次迭代,我都需要拔出一个LinkedLists来添加一些东西,然后把它放回到它在arraylist中的位置但是通过这样做我丢失了对LinkedList的引用,因此信息是失去了

for (position = 0; position < deck.length; position++) {
            scan = (deck[position]).getValue();
            temp_list = list.get(scan);
            temp_list.offer(deck[position]);
            list.add(scan, temp_list);
        }

有没有更好的方法来访问arraylist中的LinkedLists而不会丢失信息,因为我的方式不起作用。

1 个答案:

答案 0 :(得分:5)

问题在于您的初始for循环; size()返回列表中元素的数量,而不是分配的容量(如果列表实现甚至有一个)。将5拉出一个常量,然后从0循环到常量。然后,通常只在get()使用set() / ArrayList

请注意,您不必“拉出”并“放回”包含的LinkedList个对象;你可以致电arrayList.get(linkedListNumber).offer(card);