在我的业务逻辑中,我想用另一个列表完全替换一个列表。
以下方法是否正确?
public class TestListReplacement {
public static void main(String[] args) {
List<String> values= new ArrayList<String>();
values.add("a");
values.add("b");
values.add("c");
values.add("d");
values.add("e");
values.add("f");
List<String> valuesNew= new ArrayList<String>();
valuesNew.add("g");
valuesNew.add("h");
valuesNew.add("i");
valuesNew.add("j");
valuesNew.add("k");
values= valuesNew;
for(String val:values){
System.out.println(val);
}
}
}
这似乎工作正常,但我想知道在某些用例中是否可行。
答案 0 :(得分:5)
如果我理解你正在尝试做什么,那么
values.clear(); // delete original contents in the list
values.addAll(valuesNew); // insert everything in the new list
从@nbrooks和其他人的答案中添加更多上下文: 覆盖引用并不总是一种选择,坦率地说,在集合中迭代两次的低效率在实践中几乎总是无关紧要的。如果您需要保留相同的列表实例(因为它在代码中的其他位置被引用),则覆盖变量并不会更新其他位置。