我正试图创建一个数组列表的数组列表的副本,但在这样做时,所有单个元素的地址都保持不变。
copySorted = new ArrayList<ArrayList<String>>(origSorted);
我希望在不引用原始文件的情况下生成origSorted的副本,但每当我对copySorted进行更改时,origSored也会发生这种情况。我还尝试了.clone((函数,得到了相同的结果。
您看到的不是对copySorted
的更改,而是对外部列表之间共享的内部列表的更改。如果你想让它们完全不同,你需要单独复制每一个:
copySorted = new ArrayList<>(origSorted.size());
for (List<String> inner : origSorted) {
copySorted.add(new ArrayList<>(inner));
}
首先创建您的ArrayList,然后使用关键字Word"新的";所以新的数组列表将是一个与第一个数组列表分离的新对象,如下所示:
ArrayList<String> myFirstArrayList = new ArrayList<>();//creat my first arrayList
//add some objects
myFirstArrayList.add("1");
myFirstArrayList.add("2");
myFirstArrayList.add("3");
//print it
System.out.println(myFirstArrayList);//[1, 2, 3]
//creating a new arrayList by coping the first but we create a new arrayList by using the keyword "New"
ArrayList<String> newArrayList= new ArrayList<>(myFirstArrayList);
//print new arraylist
System.out.println(newArrayList);//[1, 2, 3]
//make some change in the new arraylist
newArrayList.remove(1);
//print the
System.out.println(newArrayList);//[1, 3]
System.out.println(myFirstArrayList);//[1, 2, 3]
//my original arraylist still not changed b'z the two objects of arraylists are seperate.