我在将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]
我理解为什么我会得到两个列表但是我的主要问题是为什么我得到了第二个输出。
******免责声明:当我在外面打印剩余部分时,我只获得了第二个清单。*******
答案 0 :(得分: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
方法的解释