flatMap
是 Java 8 中引入的一個流操作,它允許你將多個流合并成一個流,并將每個流中的元素轉換為另一種形式。要與其他流操作組合使用 flatMap
,你可以按照以下步驟進行:
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
flatMap
操作,將多個流合并成一個流。例如,假設你有一個 List<List<String>>
,你想將其轉換為一個包含所有元素的單個字符串列表:List<List<String>> listOfLists = List.of(
List.of("a", "b"),
List.of("c", "d"),
List.of("e", "f")
);
Stream<String> flatStream = listOfLists.stream()
.flatMap(list -> list.stream());
flatMap
與其他操作組合使用。例如,如果你想過濾掉空字符串并將結果轉換為小寫,可以這樣做:Stream<String> filteredAndLowercaseStream = flatStream
.filter(s -> !s.isEmpty())
.map(String::toLowerCase);
collect
方法將流中的元素收集到一個新的集合中,例如 List
或 Set
:List<String> result = filteredAndLowercaseStream
.collect(Collectors.toList());
將這些步驟組合在一起,完整的示例代碼如下:
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class FlatMapExample {
public static void main(String[] args) {
List<List<String>> listOfLists = List.of(
List.of("a", "b"),
List.of("c", "d"),
List.of("e", "f")
);
Stream<String> flatStream = listOfLists.stream()
.flatMap(list -> list.stream());
Stream<String> filteredAndLowercaseStream = flatStream
.filter(s -> !s.isEmpty())
.map(String::toLowerCase);
List<String> result = filteredAndLowercaseStream
.collect(Collectors.toList());
System.out.println(result); // 輸出: [a, b, c, d, e, f]
}
}
這個示例展示了如何將 flatMap
與 filter
和 map
操作組合使用。你可以根據需要添加更多的操作,以滿足你的需求。