gpt4 book ai didi

java - 为什么我的原始列表数组被修改

转载 作者:行者123 更新时间:2023-12-02 00:09:28 26 4
gpt4 key购买 nike

为什么我打电话

ArrayList<String> reversedList = ListUtils.reverse(list);

正在修改原始列表,即使我在方法内复制它

package com.javablackbelt.utils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class ListUtils {

public static void main(String arg[]) {
String[] arr = {"one", "two", "three", "four", "five"};
ArrayUtils.print(arr);

System.out.println();

String [] reversedArr = ArrayUtils.reverse(arr);
ArrayUtils.print(reversedArr);

System.out.println();

ArrayList<String> list = ArrayUtils.toArrayList(arr);
ListUtils.print(list);

ArrayList<String> reversedList = ListUtils.reverse(list);
ListUtils.print(reversedList);

String[] arrFromList = ListUtils.toArray(list);
ArrayUtils.print(arrFromList);

}

public static void print(ArrayList<String> aStr) {
System.out.print("list: [ ");
for(String l: aStr)
System.out.print(l+" ");
System.out.println(" ] size: "+aStr.size());
}

public static ArrayList<String> reverse(ArrayList<String> aList) {
ArrayList<String> newList = aList;

Collections.reverse(newList);
return newList;
}

public static String[] toArray(ArrayList<String> list) {
ArrayList<String> newList = list;
String[] newStr = newList.toArray(new String[list.size()]);

return newStr;
}

}

最佳答案

ArrayList<String> newList = aList;没有创建新列表。它创建对同一列表的新引用。

创建新列表可以通过以下方式完成:

ArrayList<String> newList = new ArrayList<String>(aList.size());
for (String str : aList)
newList.add(str);

谢谢@JB Nizet这要简单得多:

ArrayList<String> newList = new ArrayList<String>(aList);

关于java - 为什么我的原始列表数组被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148672/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com