我在将 ArrayList 项目添加到链接列表时遇到问题。起初它工作得很好,但由于某种原因,现在不想采取行动,我将信息传输到我的计算机上。
基本上,发生的情况是,不是将数组列表中的 2 个项目移动到链接列表,而是移动了 4 个项目(这两个项目复制自身)。
这是我的代码:
for(Customer obj : customers){
remaining.addAll(obj.getIndex(), customers);
System.out.println(remaining);
//System.out.println(obj.getIndex() + " Customer: " + obj.getType());
}
我的输出: [慢速客户0,慢速客户1] [慢客户0,慢客户0,慢客户1,慢客户1]
我明白为什么我会得到两个列表,但我对你们所有人的主要问题是为什么我会得到第二个输出。
*****免责声明:当我将剩余的打印在外面时,我只得到了第二个列表。********
请您参考如下方法:
我认为您误解了方法addAll(int index, Collection collection)
该方法的作用:它获取所使用的集合中的每个元素,并将这些元素添加到调用该方法的列表中。它们将被添加到指定的索引处,并且所有后续元素将被移动。(有关更多信息,请参阅 java 文档 https://docs.oracle.com/javase/7/docs/api/java/util/List.html#addAll(int,%20java.util.Collection )
然而,您调用它的次数如此之多,因此添加了如此多的对象,因为您将其放入循环中;)
仅使用 remaining.addAll(customers);
一次并放弃循环。
(或者保留循环并在每个对象上使用 add(obj);
)
编辑:更正了 addAll
方法的解释