相同的值在内存中的不同点

时间:2017-11-30 04:28:17

标签: java

我试图让我的一个arraylists与另一个具有相同的值,但我不希望它们在内存中具有相同的位置(相同的引用)。有关如何实现这一点的任何快速方法?这是我要复制的ArrayList<ArrayList<String>>

3 个答案:

答案 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对象,而字符串保持不变(无论如何都是不可变的)。