我想将一个类列表复制到另一个类列表,但我有一个错误,表示目标列表大小为零,但我为目标列表初始化了大小。
public class Programs {
public Programs() {
private int number;
private String name;
private int enterT;
private int burstT;
private int priority;
......
}
public void SJF(List<Programs> progList){
List<Programs> tempProgListMin = new ArrayList<>(progList.size());
Collections.copy(tempProgListMin, progList);
}
我有错误,说tempProgListMin的大小是0并且小于progList的大小, 我想,我正确编写了代码,但我不知道它为什么会出错。 我需要一份副本,当我更改列表b中的内容(复制一份)时,列表A中没有任何更改 抱歉英语!
答案 0 :(得分:1)
size()
返回列表中元素数量,而不是您作为参数传递的 inicial capacity 。因此,tempProgListMin
尺寸为0
。
您可以使用此重载的构造函数:
List<Programs> tempProgListMin = new ArrayList<>(progList);
来自Java Docs:
public ArrayList(Collection c): 构造一个包含指定集合元素的列表, 按照它们由集合的迭代器返回的顺序。
答案 1 :(得分:0)
根据Collections.copy(destinationList,SourceList)
方法的文档,
The destination list must be at least as long as the source list
。因此,您的目标列表大小似乎为零且小于源列表的长度
答案 2 :(得分:0)
考虑我的例子
List<String> list1=new ArrayList<>();
list1.add("a");
list1.add("b");
list1.add("c");
List<String> list2=new ArrayList<>(list1);
现在工作正常。
将您的代码更改为
List<Programs> tempProgListMin = new ArrayList<>(progList);