[英]How can I convert a Set of objects into a Map of the Object's fields to a set of fields using Java streams?
如果我有A班
public class A {
String name;
String value;
}
我有一個要轉換為Map<String, Set<String>>
,它使用流類將A.name映射到A.value的集合,因為A的許多實例將共享相同的名稱String ,但沒有一個共享相同的字符串值。 有沒有辦法做到這一點?
要創建Map<String, Set<String>>
,它映射A.name
一組A.value
,你需要使用下面的方法:
groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
mapping(Function<? super T,? extends U> mapper, Collector<? super U,A,R> downstream)
Map<String, Set<String>> map = set.stream()
.collect(Collectors.groupingBy(A::getName,
Collectors.mapping(A::getValue,
Collectors.toSet())));
該代碼使用方法引用來引用A
類上的getter方法,盡管可以使用lambda表達式代替,例如A::getName
可以替換為o -> o.name
。
您可以在轉換之前實例化一個空的Map,然后將使用匿名函數收集轉換,該函數將檢查該Map以查看它是否應該放置一個新集合或更新一個現有集合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.