首先,你的做法是半正確的。
對於二維數組,您可以有ArrayList
的ArrayList
s。
但是......
你初始化你的List
原始類型。從Java 7,你可以改變你分配一個鑽石型的推斷:
List<List<String>> pods = new ArrayList<>();
在早期版本:
List<List<String>> pods = new ArrayList<List<String>>();
您還需要填充您的列表。
爲此,您需要一些迭代。
這是一個完整的Java 7示例(使用List
作爲「代碼到接口」指南建議)。
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, ]]
'Arrays.asList'返回固定大小'List'。我相信你不能使用這個解決方案將元素附加到內部'List'。 –
@ManosNikolaidis這是真的,雖然不是對原始問題的要求。最簡單的解決方案是將我的猜測包裝在構造函數中。 – Mena