gpt4 book ai didi

Java 列表 : Difference between assignment while instantiating and after

转载 作者:行者123 更新时间:2023-11-30 01:53:34 27 4
gpt4 key购买 nike

仅当我在实例化 arrayList 后为其赋值时,才会出现此错误。 This is the Error

只有当代码如下时才会发生这种情况:

String line = scanner.nextLine();
line = line.replaceAll("[^A-Za-z]", " ");
line = line.toLowerCase();
List<String> words = new ArrayList<String>();
words = Arrays.asList(line.split(" "));
words.removeAll(Arrays.asList("", null));
System.out.println(Arrays.toString(words.toArray()));

当代码如下时,程序可以正常工作:

String line = scanner.nextLine();
line = line.replaceAll("[^A-Za-z]", " ");
line = line.toLowerCase();
List<String> words = new ArrayList<String>(Arrays.asList(line.split(" ")));
words.removeAll(Arrays.asList("", null));
System.out.println(Arrays.toString(words.toArray()));

感谢您提供任何类型的进一步解释和建议:)

最佳答案

This error only occurs when I assign values to an arrayList after it has been Instantiated.

这不是你在这里所做的:

List<String> words = new ArrayList<String>();
words = Arrays.asList(line.split(" "));

您将一个空的 ArrayList 分配给 words,然后分配一个由 Arrays.asList( 创建的不同的 List) line.split("")),到单词。第二个 List 是一个固定大小的 List,因此您无法从中删除元素。

如果稍后您为其分配不同的 List,则将 words 初始化为空的 ArrayList 是没有意义的。

如果您想使用用于初始化 words 变量的 ArrayList,请在第二条语句中使用 addAll:

List<String> words = new ArrayList<String>();
words.addAll(Arrays.asList(line.split(" ")));

关于Java 列表 : Difference between assignment while instantiating and after,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55207675/

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