java - 如何在 Java 中使用 List、ArrayList 和/和 Array 创建二维数组

标签 java arrays list arraylist

我对 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/

相关文章:

java - Android:WAITING模拟器在 Mac 中上线时出现超时错误?

java - 如何确定Weblogic服务器处于生产模式还是开发模式?

ios - Firebase 查询观察重新显示数据

javascript,这个函数怎么可能返回一个空数组?

java - 如何对简单的整数二维数组进行排序?

python - 如何制作一个按顺序排列的 n 个列表的列表(以最 pythonic 的方式)?

c# - 使用 LINQ 查找列表中的特定值

java - 我想将放入 fragment 的 args 包中的 ArrayList<Integer> 转换为类型 Integer[] 以用于其他方法?

java - 短信到我的网站!

java - 如何检查参数值是否在常量列表中