我必須從包含如下所示行的串列中過濾字串。
"15:09:00 SOME TEXT SOME TEXT 088"
"15:09 SOME TEXT 1546 AMOUNT"
"15:09:06 SOME TEXT 1546 AMOUNT"
"13:03:00 SOME TEXT TEXT TEXT 00"
我想獲取以空格開頭的元素,15:09然后用空格分割行。該split()方法回傳一個陣列。
如何使用流將其收集到陣列中?
我試過下面的代碼。我不明白如何將資料收集到陣列中,這就是為什么這里的方法collect()回傳一個串列。
String [] parts = myList.stream()
.filter(p -> p.startsWith("19:01 "))
.map(l -> l.split("\\s "))
.collect(Collectors.toList());
uj5u.com熱心網友回復:
split 回傳一個陣列
您需要申請flatMap()才能Strings從Strings[].
為了將流資料收集到一個陣列中,您需要 apply toArray(),它需要一個函式來生成所需型別的陣列,作為終端操作:
public static void main(String[] args) {
List<String> myList =
List.of("15:09:00 SOME TEXT SOME TEXT 088",
"15:09 SOME TEXT 1546 AMOUNT",
"15:09:06 SOME TEXT 1546 AMOUNT",
"13:03:00 SOME TEXT TEXT TEXT 00");
String[] parts = getParts(myList, "15:09:06", "\\s ");
System.out.println(Arrays.toString(parts));
}
public static String[] getParts(List<String> source, String prefix, String delimiter) {
return source.stream()
.filter(str -> str.startsWith(prefix)) // Stream<String>
.map(str -> str.split(delimiter)) // Stream<String[]>
.flatMap(Stream::of) // Stream<String>
.toArray(String[]::new);
}
輸出
[15:09:06, SOME, TEXT, 1546, AMOUNT]
uj5u.com熱心網友回復:
您可以將 flatMap 和拆分在一起。
String [] parts = myList.stream()
.filter(p -> p.startsWith("19:01 "))
.flatMap(l -> Arrays.stream(l.split("\\s ")))
.toArray(String[]::new);
uj5u.com熱心網友回復:
如果我在你身邊,我會這樣做以選擇字串的單個字符,如果 char 等于“”,則使用子字串方法將字串復制到 arrylist 中并洗掉從文本中選擇的字串
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/469102.html
下一篇:如何在陣列中找到最大范圍的整數?
