我试图让我的一个arraylists与另一个具有相同的值,但我不希望它们在内存中具有相同的位置(相同的引用)。有关如何实现这一点的任何快速方法?这是我要复制的ArrayList<ArrayList<String>>
。
答案 0 :(得分:0)
您可以尝试使用旧列表作为参数创建新的List对象:
List<String> newList = new ArrayList<>(oldList);
List<List<String>>
尝试使用:
//yourList is the list with your old values
List<List<String>> newList = new ArrayList<>();
for(List<String> oldList : yourList){
newList.add(new ArrayList<>(oldList));
}
答案 1 :(得分:0)
终于明白了。我只是用了一个for循环...
ArrayList < ArrayList<String > > new2dArrayList = new ArrayList<ArrayList < String > > ();
for(int i = 0; i < orig2dArrayList.size(); i++){
ArrayList<String> newArrayList = new
ArrayList<String>();
for(int j = 0; j < orig2dArrayList.get(i).size(); j++){
newArrayList.add(orig2dArrayList.get(i).get(j));
}
new2dArrayList.add(newArrayList);
}
答案 2 :(得分:0)
这也可以(Java 8):
List<ArrayList<String>> newList =
oldList.stream().map(ArrayList<String>::new).collect(Collectors.toList());
newList 包含新的List对象,而字符串保持不变(无论如何都是不可变的)。