我有一個像這樣的數組String arr[][] = {{"abc"}, {"bcd"}, {null}}這是多維數組(數組中的單字符串數組)。我想刪除這些空值并希望最終結果為{{"abc"}, {"bcd"}}. 該數組可以是任意大小,并且可以有任意數量的空值我試過這樣的事情。我知道我可以使用傳統的 for 循環,但我想使用 java8 或更高效地進行循環。 String arr1[][] = Arrays.stream(arr)
.filter(str -> (((str != null) && (str.length > 0))))
.toArray(String[][]::new);
2 回答

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
您可以使用來自Arrays
輔助類的流來過濾非空值:
String arr[][] = {{"abc"}, {"bcd"}, {null}}; String result[][] = Arrays.stream(arr) .map(innerArray -> Arrays.stream(innerArray).filter(Objects::nonNull).toArray(String[]::new)) .toArray(String[][]::new);
編輯:
正如@Andreas 指出的那樣,這會留下空的內部數組,我們需要用額外的filter(innerArray -> innerArray.length > 0)
. 最后:
String result[][] = Arrays.stream(arr) .map(innerArray -> Arrays.stream(innerArray).filter(Objects::nonNull).toArray(String[]::new)) .filter(innerArray -> innerArray.length > 0) .toArray(String[][]::new);

慕妹3242003
TA貢獻1824條經驗 獲得超6個贊
你的解決方案就快到了;支票只有一個錯誤:
String arr1[][] = Arrays.stream(arr) .filter(str -> str[0] != null) .toArray(String[][]::new);
添加回答
舉報
0/150
提交
取消