我以下列方式创建了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而不会丢失信息,因为我的方式不起作用。
答案 0 :(得分:5)
问题在于您的初始for
循环; size()
返回列表中元素的数量,而不是分配的容量(如果列表实现甚至有一个)。将5
拉出一个常量,然后从0
循环到常量。然后,通常只在get()
使用set()
/ ArrayList
。
请注意,您不必“拉出”并“放回”包含的LinkedList
个对象;你可以致电arrayList.get(linkedListNumber).offer(card);
。