Java 相同的值在内存中的位置不同

Java 相同的值在内存中的位置不同,java,Java,我试图让我的一个ArrayList与另一个具有相同的值,但我不希望它们在内存中具有相同的位置(相同的引用)。有没有快速的方法来实现这一点?这是我试图复制的ArrayList。您可以尝试使用旧列表作为参数创建一个新的列表对象: List<String> newList = new ArrayList<>(oldList); List newList=newarraylist(oldList); 对于列表请尝试使用: //yourList is the list wit

我试图让我的一个ArrayList与另一个具有相同的值,但我不希望它们在内存中具有相同的位置(相同的引用)。有没有快速的方法来实现这一点?这是我试图复制的
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());