我对 Java 相当陌生,在寻找执行以下操作的结构时遇到问题。
我想要一个固定长度的数组。每个项目都是一个包含字符串的可变长度数组(或列表)。所以我尝试过...
ArrayList<String>[] wordList = new ArrayList[maxWordLength];
我因为“Main.java 使用未经检查或不安全的操作”而受到 Java 的严厉批评。当我尝试添加一个项目时,我得到“java.lang.NullPointerException”
wordList[oneWord.length()-1].add(oneWord);
我应该如何创建我的结构才能让 Java 满意?
最佳答案
Java 不喜欢泛型类型的数组。 (请参阅 Java 教程中的 Restrictions on Generics。)而是使用列表的列表:
List<List<String>> wordList = new ArrayList<>(maxWordLength);
这将创建一个初始容量为 maxWordLength
的列表,其中可以包含 String
列表。初始大小(而不是容量)将为 0。然后您可以将单独的字符串列表添加到 wordList
中。为了避免以后出现 NullPointerException
,您应该用空列表填充 wordList
:
for (int i = 0; i < maxWordLength; i++) {
wordList.add(new ArrayList<>());
}
最后,您可以使用以下方法将单词添加到 wordList
中的特定列表:
wordList.get(oneWord.length() - 1).add(oneWord);
这不会强制 wordList
具有固定长度,但在其他方面应该满足您的要求。
关于java - 如何在 Java 中使用 List、ArrayList 和/和 Array 创建二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49263266/