Java 在下面的场景中,是否有方法防止更改不可修改列表中的数据?
这里我有一个场景,我想创建一个不可修改的列表,这样程序的其他部分就不能修改它的初始值 下面是关于我的问题的一些想法的代码片段Java 在下面的场景中,是否有方法防止更改不可修改列表中的数据?,java,arraylist,collections,Java,Arraylist,Collections,这里我有一个场景,我想创建一个不可修改的列表,这样程序的其他部分就不能修改它的初始值 下面是关于我的问题的一些想法的代码片段 public class Test { public static void main(String[] args) { List<String> unmodifiableList = new ArrayList<String>(); unmodifiableList.add("test1");
public class Test {
public static void main(String[] args) {
List<String> unmodifiableList = new ArrayList<String>();
unmodifiableList.add("test1");
unmodifiableList.add("test2");
unmodifiableList = Collections.unmodifiableList(unmodifiableList);
List<String> modifiableList = new ArrayList<String>();
modifiableList.addAll(unmodifiableList);
unmodifiableList = modifiableList;
unmodifiableList.add("test3");
for (String s : unmodifiableList) {
System.out.println(s);
}
}
}
公共类测试{
公共静态void main(字符串[]args){
List unmodifiableList=新建ArrayList();
不可修改列表。添加(“test1”);
不可修改列表。添加(“test2”);
不可修改列表=集合。不可修改列表(不可修改列表);
List modifiableList=新建ArrayList();
modifiableList.addAll(不可修改列表);
不可修改列表=可修改列表;
不可修改列表。添加(“test3”);
for(字符串s:不可修改列表){
系统输出打印项次;
}
}
}
输出:
测试1
测试2
测试3
预期产出:
测试1
测试2你能试试下面的吗
final List<String> unmodifiableList1 = Collections.unmodifiableList(unmodifiableList);
final List<String> finalList = Collections.unmodifiableList(Arrays.asList("test1", "test2"));
final List unmodifiableList1=集合。unmodifiableList(unmodifiableList);
要避免创建额外列表,请尝试以下操作
final List<String> unmodifiableList1 = Collections.unmodifiableList(unmodifiableList);
final List<String> finalList = Collections.unmodifiableList(Arrays.asList("test1", "test2"));
finalList=Collections.unmodifiableList(Arrays.asList(“test1”、“test2”));
你能试试下面吗
final List<String> unmodifiableList1 = Collections.unmodifiableList(unmodifiableList);
final List<String> finalList = Collections.unmodifiableList(Arrays.asList("test1", "test2"));
final List unmodifiableList1=集合。unmodifiableList(unmodifiableList);
要避免创建额外列表,请尝试以下操作
final List<String> unmodifiableList1 = Collections.unmodifiableList(unmodifiableList);
final List<String> finalList = Collections.unmodifiableList(Arrays.asList("test1", "test2"));
finalList=Collections.unmodifiableList(Arrays.asList(“test1”、“test2”));
这是Java,不是JavaScript。如果希望它不可修改,为什么要创建新的可修改列表?unmodifiableList=modifiableList代码>你认为这个语句做什么?这只是为了说明问题,但在实际应用中,如果其他开发人员可以使用上述方法修改我的不可修改列表,那么我们就失去了使其不可修改的唯一目的。请检查此项。这是Java,不是JavaScript。如果希望它不可修改,为什么要创建新的可修改列表?unmodifiableList=modifiableList代码>你认为这个语句做什么?这只是为了说明问题,但在实际应用中,如果其他开发人员可以使用上述方法修改我的不可修改列表,那么我们就失去了使其不可修改的唯一目的。请检查此项。这似乎可行,但我们需要创建一个额外的列表。您可以尝试此最终列表unmodifiableList=Collections.unmodifiableList(新ArrayList(“test1”、“test2”);为了避免创建额外的列表@lion_pankaj,如果使用此选项,则final list unmodifiableList=Collections.unmodifiableList(新的ArrayList(“test1”、“test2”);,它会在eclipse中给您带来编译错误,比如“构造函数ArrayList(String,String)未定义”。是的,对,您可以执行以下操作:最终列表列表=集合。不可修改列表(新的ArrayList(Arrays.asList(“test1”,“test2”));这将工作final List=Collections.unmodifiableList(新的ArrayList(Arrays.asList(“test1”、“test2”));这似乎可行,但我们需要创建一个额外的列表。您可以尝试此最终列表unmodifiableList=Collections.unmodifiableList(新ArrayList(“test1”、“test2”);为了避免创建额外的列表@lion_pankaj,如果使用此选项,则final list unmodifiableList=Collections.unmodifiableList(新的ArrayList(“test1”、“test2”);,它会在eclipse中给您带来编译错误,比如“构造函数ArrayList(String,String)未定义”。是的,对,您可以执行以下操作:最终列表列表=集合。不可修改列表(新的ArrayList(Arrays.asList(“test1”,“test2”));这将工作final List=Collections.unmodifiableList(新的ArrayList(Arrays.asList(“test1”、“test2”));