简体   繁体   English

使用Java 8流对象将列表对象转换为自定义Map

[英]Converting list object into custom Map using Java 8 stream object

I have a class "First" which contains reference to Class "Second" as list. 我有一个类“First”,它包含对Class“Second”的引用作为列表。 I am trying to achieve below block in Java 8 way by using Stream (or) flap Map (or) groupingBy 我试图通过使用Stream(或)flap Map(或)groupingBy以Java 8方式实现下面的块

foreach(First a: listOfFirst){
    for (Second b: a.getSecondDetails()) {
        inputMap.put(b, a);
    }
}

I tried below simplified way 我试过以下简化方式

listOfFirst.stream()
    .flatMap(p -> p.getSecondDetails().stream())
    .collect(Collectors.toMap(p -> p, q -> q));

I am missing something here, please help me out 我在这里遗漏了一些东西,请帮帮我

You need to "remember" the First instance corresponding to each Second instance. 您需要“记住”与每个Second实例对应的First实例。 You can do it, for example, by creating Map.Entry instances: 例如,您可以通过创建Map.Entry实例来执行此操作:

Map<Second,First> result =
    listOfFirst.stream()
               .flatMap(p->p.getSecondDetails()
                            .stream()
                            .map(sec -> new SimpleEntry<>(sec,p))
               .collect(Collectors.toMap(Map.Entry::getKey,
                                         Map.Entry::getValue));

如何转换列表<object>至 Map<k, v> 使用 java stream<div id="text_translate"><p> 我想将List&lt;ObjectInList&gt;转换为Map&lt;K, V&gt;</p><pre> class ObjectInList { List&lt;Long&gt; listWithLong; Map&lt;String, Object&gt; dataMap; // there is 'id' key, and i want to use this id as key in map to be converted }</pre><p> 新的 map 格式如下</p><pre>String type; // this type is value of dataMap. List&lt;Long&gt; contents</pre><p> List&lt;Object&gt;中的每个 Object 都可以有重复的类型</p><p>例如</p><pre>///////// before converted //////////// [ { list: [1,2,3], dataMap: { type: "a", } }, { list: [4,5,6], dataMap: { type: "b", } }, { list: [7,8], dataMap: { type: "a", } }, ] ///////////// after converted ////////// { "a": [1,2,3,7,8], "b": [4,5,6] }</pre></div></k,></object> - How to convert LIst<Object> to Map<K, V> with using java stream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用流将Java <Object>收集到Java 8中的Map <String,List <Object >> - Collect List<Object> to Map<String, List<Object>> in Java 8 using stream 使用自定义收集器对象对 Java Stream 中的哈希映射中的值进行分组? - Grouping values in Hash Map in Java Stream using custom Collector object? java流列表 <Object[]> 到地图 <Object, List<Object[]> &gt; - java stream List<Object[]> to Map<Object, List<Object[]>> 如何转换列表<object>至 Map<k, v> 使用 java stream<div id="text_translate"><p> 我想将List&lt;ObjectInList&gt;转换为Map&lt;K, V&gt;</p><pre> class ObjectInList { List&lt;Long&gt; listWithLong; Map&lt;String, Object&gt; dataMap; // there is 'id' key, and i want to use this id as key in map to be converted }</pre><p> 新的 map 格式如下</p><pre>String type; // this type is value of dataMap. List&lt;Long&gt; contents</pre><p> List&lt;Object&gt;中的每个 Object 都可以有重复的类型</p><p>例如</p><pre>///////// before converted //////////// [ { list: [1,2,3], dataMap: { type: "a", } }, { list: [4,5,6], dataMap: { type: "b", } }, { list: [7,8], dataMap: { type: "a", } }, ] ///////////// after converted ////////// { "a": [1,2,3,7,8], "b": [4,5,6] }</pre></div></k,></object> - How to convert LIst<Object> to Map<K, V> with using java stream 将 object 列表转换为 map java 8 ZF7B44CFAFD5C52223D7BZBZ - convert list of object to map java 8 stream 用于 Map 的 Java 8 流过滤器<String, List<Object> &gt; - Java 8 stream filter for Map<String, List<Object>> 转换地图 <Integer, List<Object> &gt;到地图 <Integer, Map<String, Map<LocalDate, Integer> &gt;&gt;使用Java流API - Convert Map<Integer, List<Object>> to Map<Integer, Map<String, Map<LocalDate, Integer>>> using Java stream API 转换地图 <Integer, Object> 到地图 <Integer, List<Object> &gt;,不使用for循环(java) - Converting a Map<Integer, Object> to Map<Integer, List<Object>>, without using for loops (java) 使用流从地图填充对象列表 - Populate a list of object from a map using stream 使用Java流将对象映射到多个对象 - Map object to multiple objects using Java stream
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM