這個問題在這里已經有了答案: 將 2d 陣列轉換為 Java 中的串列串列 3 個答案 4 小時前關閉。
我有一個像這樣的二維矩陣String[][] arr;,我想把它轉換成List<List<String>>arr;. 我怎樣才能做到這一點?
我在這個社區上看到了一些與我的問題相關的類似答案,但它們是關于如何在List<T>.
uj5u.com熱心網友回復:
為此,您可以使用實用程式類的asList()靜態方法。Arrays只需遍歷源陣列并應用于asList()每個嵌套陣列。
List<List<String>> result = new ArrayList<>();
for (String[] next: arr) {
result.add(Arrays.asList(next));
}
請注意,該asList()方法回傳由指定陣列支持的串列,因此無法更改其大小(您可以對其進行排序、重新分配值,但其add()和remove()方法將拋出UnsupportedOperationException)。對串列所做的更改將反映在源陣列中,反之亦然。
如果您需要一個可以修改的串列,您可以asList()用ArrayListlike that包裝一個生成的串列new ArrayList<>(Arrays.asList(next))。
如果您對流感到滿意,您可能會選擇另一種方法。
下面的代碼將生成一個不可修改的串列,該串列由不可修改的串列組成。這在不同的現實生活場景中可能是有意義的(比如當想要保護它免受不希望的更改時從方法回傳集合)。toList()與Java 16及更高版本相比,它具有顯著的性能優勢Collectors.toList()。
List<List<String>> result1 = Stream.of(arr)
.map(strArr -> Stream.of(strArr).toList())
.toList(); // unmodifiable list
而且這段代碼可以用來獲取一個可修改的串列,它只需要Java 8。
List<List<String>> result2 = Stream.of(arr)
.map(strArr -> Stream.of(strArr).collect(Collectors.toList()))
.collect(Collectors.toList()); // modifiable list
uj5u.com熱心網友回復:
你可以嘗試類似
String[][] arr = new String[][] { { "a", "b" }, { "c", "d" } };
List<List<String>> list_arr = Arrays.stream(arr)
.map(e -> Arrays.stream(e).collect(Collectors.toList()))
.collect(Collectors.toList());
list_arr.forEach(System.out::println);
正如 Eritrean 在他們的評論中所建議的那樣,這利用了 Java 的 Streams API。我沒有使用 Arrays.asList 方法,而是使用了兩次 collect 方法來進行轉換。
輸出:
[a, b]
[c, d]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/430264.html
