[英]Java Streams: Extend Built-In Collector
我想知道是否可以從java.util.stream.Collectors
類擴展內置 Java Stream 收集器,而不是從頭開始構建自定義收集器,從而復制已經在該類中實現的代碼.
例如:假設我有Stream<Map.Entry<String, Long>> mapEntryStream
並且我想將其收集到Map<String, Long>
類型的Map<String, Long>
。
我當然可以這樣做:
mapEntryStream.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
但是假設我想要像這樣推斷的鍵和條目:
//Not a real Java Collectors method
mapEntryStream.collect(Collectors.toMap());
那么我如何制作一個收集器,就像上面的那個一樣,它不需要參數但調用Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)
?
請注意:這不是關於是否應該制作這樣的收藏家的問題——只有在可以制作的情況下。
您不能向Collectors
類添加方法。 但是,您可以創建自己的實用程序方法來返回您想要的內容:
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collector;
import java.util.stream.Collectors;
public class MoreCollectors {
public static <K, V> Collector<Entry<K, V>, ?, Map<K, V>> entriesToMap() {
return Collectors.toMap(Entry::getKey, Entry::getValue);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.