Java 相同的值在内存中的位置不同
我试图让我的一个ArrayList与另一个具有相同的值,但我不希望它们在内存中具有相同的位置(相同的引用)。有没有快速的方法来实现这一点?这是我试图复制的Java 相同的值在内存中的位置不同,java,Java,我试图让我的一个ArrayList与另一个具有相同的值,但我不希望它们在内存中具有相同的位置(相同的引用)。有没有快速的方法来实现这一点?这是我试图复制的ArrayList。您可以尝试使用旧列表作为参数创建一个新的列表对象: List<String> newList = new ArrayList<>(oldList); List newList=newarraylist(oldList); 对于列表请尝试使用: //yourList is the list wit
ArrayList
。您可以尝试使用旧列表作为参数创建一个新的列表对象:
List<String> newList = new ArrayList<>(oldList);
List newList=newarraylist(oldList);
对于列表
请尝试使用:
//yourList is the list with your old values
List<List<String>> newList = new ArrayList<>();
for(List<String> oldList : yourList){
newList.add(new ArrayList<>(oldList));
}
//yourList是包含旧值的列表
List newList=newarraylist();
对于(列表oldList:yourList){
add(newarraylist(oldList));
}
终于明白了。我只是用了一个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);
}
ArrayListnew2dArrayList=newarraylist>();
对于(int i=0;i
这也适用(Java 8):
List新列表=
oldList.stream().map(ArrayList::new).collect(Collectors.toList());
newList包含新的列表对象,而字符串保持不变(无论如何是不可变的)。输入代码:)尝试将问题分解为更小的问题。1) 创建一个新的ArrayList。2) 迭代原始列表中的每个ArrayList。3) 对于每个列表,从该列表创建一个新的ArrayList,并将其添加到列表的副本列表中。每一个都是一个小的、独立的概念。把每一个都弄清楚,你就快到了!听起来你想要一个deap克隆人。这可以通过一系列不同的方式以不同的效率完成。但是,如果结构仅为ArrayList,您可能只想编写自己的复制方法
List<ArrayList<String>> newList =
oldList.stream().map(ArrayList<String>::new).collect(Collectors.toList());