我是编码新手。我的老师最近介绍了数组和数组列表。我有一个像这样的多维数组:
private String[][] pods = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};
我想将其切换为数组列表,因为我需要编辑其中的信息。
如果使用多维 ArrayList,我该怎么做?我想用上面的信息初始化它。
我已经试过了:
private ArrayList<ArrayList<String>> pods = new ArrayList();
每当我将内容放在括号之间时,我都会收到无效的运算符错误。
顺便说一句,以防万一有人想知道 - 这不是类作业。这是我自己尝试的东西。
谢谢。
最佳答案
首先,您的方法只对了一半。
对于二维数组,您可以使用 ArrayList
的 ArrayList
。
然而...
您正在将 List
初始化为原始类型。从 Java 7 开始,您只需将赋值更改为菱形类型即可进行推理:
List<List<String>> pods = new ArrayList<>();
在早期版本中:
List<List<String>> pods = new ArrayList<List<String>>();
您还需要填充列表。
为此,您需要进行一些迭代。
这是一个完整的 Java 7 示例(使用 List
作为“接口(interface)代码”指南的建议)。
String[][] info = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};
List<List<String>> pods = new ArrayList<>();
for (String[] level1: info) {
List<String> list = Arrays.asList(level1);
// use this instead if you intend to modify the inner lists
// List<String> list = new ArrayList<>(Arrays.asList(level1));
pods.add(list);
}
System.out.println(pods);
输出
[[pod1, ], [pod2, ], [pod3, ], [pod4, ]]
现在,一些 Java 8 魔力:
String[][] info = {{"pod1", ""}, {"pod2", ""}, {"pod3", ""}, {"pod4", ""}};
List<List<String>> pods =
Arrays.stream(info)
.map((a) -> Arrays.asList(a))
// use this instead if you intend to modify the inner lists
// .map((a) -> Arrays.stream(a).collect(Collectors.toList()))
.collect(Collectors.toList());
System.out.println(pods);
(相同)输出
[[pod1, ], [pod2, ], [pod3, ], [pod4, ]]
关于java - 用值初始化的多维 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33285739/