簡體   English   中英

如何使用Java流將一組對象轉換為該對象的字段映射到一組字段?

[英]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 ,你需要使用下面的方法:

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以查看它是否應該放置一個新集合或更新一個現有集合。

Java 8 轉換一個List<object> 至 Map<k,v> 使用對象的孩子的領域?<div id="text_translate"><p> 情況很簡單:我有一個 object List&lt;ParentClass&gt; list並想將其轉換為Map&lt;orderKey, price&gt;</p><p> class 如下所示</p><pre>class ParentClass{ Child1Class a; Child2Class b; }</pre><p> orderKey class 看起來像這樣</p><pre>class orderKey{ String id; String itemName; }</pre><p> 兒童班是這樣的</p><pre>class Child1Class{ String id; String itemName; Date date; ..... } class Child2Class{ BigDecimal price; .... }</pre><p> 所有的類都有對應每個字段的 getter 和 setter。 所以我本質上是想 map 孩子們的領域。 我怎樣才能做到這一點?</p><pre> -----------------------------MY ATTEMPT IS SOMETHING LIKE THIS-------------------------------------- list.stream(). .collect(Collectors.toMap(ParentClass::getA, ParentClass::getB).entrySet().stream()...... then I'm stuck</pre><p> 不知道如何構建臨時 object orderKey作為新 map 的密鑰。 任何幫助,將不勝感激。</p></div></k,v></object>

[英]Java 8 convert a List<Object> to Map<K,V> using the fields of the object's children?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

相關問題 如何使用Java中的對象字段將對象列表轉換為映射 如何檢查一組對象是否包含 object,該 object 的特定字段在 Java 中有特定值? Map 索引集到對象集,使用 Java 流 Java 8流,將對象列表轉換為Map <String, Set<String> &gt; Java集中對象的可變字段 Java 8 轉換一個List<object> 至 Map<k,v> 使用對象的孩子的領域?<div id="text_translate"><p> 情況很簡單:我有一個 object List&lt;ParentClass&gt; list並想將其轉換為Map&lt;orderKey, price&gt;</p><p> class 如下所示</p><pre>class ParentClass{ Child1Class a; Child2Class b; }</pre><p> orderKey class 看起來像這樣</p><pre>class orderKey{ String id; String itemName; }</pre><p> 兒童班是這樣的</p><pre>class Child1Class{ String id; String itemName; Date date; ..... } class Child2Class{ BigDecimal price; .... }</pre><p> 所有的類都有對應每個字段的 getter 和 setter。 所以我本質上是想 map 孩子們的領域。 我怎樣才能做到這一點?</p><pre> -----------------------------MY ATTEMPT IS SOMETHING LIKE THIS-------------------------------------- list.stream(). .collect(Collectors.toMap(ParentClass::getA, ParentClass::getB).entrySet().stream()...... then I'm stuck</pre><p> 不知道如何構建臨時 object orderKey作為新 map 的密鑰。 任何幫助,將不勝感激。</p></div></k,v></object> 如何發現對象是否包含設置為0的數字字段? 如何轉換地圖<String, List<String> &gt; 設置<String>使用流? 如何使用流根據Map字段的條件過濾一組對象? 使用過濾器和流將Map <String,Object>轉換為Map <String,Set <Object >>
 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM