简体   繁体   English

如何使用 java stream 将 object 列表分组为 map 和 select 第一个不同类型的 object?

[英]How to group a object list into a map and select the first object of different type for each key using java stream?

I have data like: List<Object1> list1 .我有这样的数据: List<Object1> list1

I need to convert it to Map<String, Object2> map1 .我需要将其转换为Map<String, Object2> map1

Code below下面的代码

map1=list1.stream()    
.collect(Collectors  
.groupingBy(Object1::getCity,Collectors  
.mapping(p -> new Object2(p.getvalue1(),p.getvalue2(),p.getvalue3()),  

here I want to get the first(based on any user defined method) item of Object1 type corresponding to each key));在这里我想得到第一个(基于任何用户定义的方法)对应于每个键的 Object1 类型的项目));

eg例如

[
 {name:a,roll:2,id:3,age:24,city:goa},  
 {name:b,roll:3,id:3,age:24,city:Delhi},  
 {name:c,roll:2,id:1,age:27,city:goa}
]

Result:结果:

{  
  id=3:{name:a,city:goa},
  id=1:{name:c,city:goa} 
}

You can use Collectors.toMap and define the merge function to take first one for each key.您可以使用Collectors.toMap并定义合并 function 以获取每个键的第一个。

Map<String, Object2> map = 
     list1.stream()
          .collect(Collectors.toMap(Object1::getCity,
                          p -> new Object2(p.getvalue1(),p.getvalue2(),p.getvalue3())
                          (a, b) -> a));

如何转换列表<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流从包含多个不同mysql日期的列表对象中获取地图对象 - How to get a map object, from a list object which contains multiple different mysql dates using java stream 如何使用 Java 流列表进行转换<Map<String,Object> &gt; 列出<String>删除每个流的一部分 - How to convert with Java stream List<Map<String,Object>> to List<String> removing part of each Stream 如何转换列表<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 使用流将Java <Object>收集到Java 8中的Map <String,List <Object >> - Collect List<Object> to Map<String, List<Object>> in Java 8 using stream 使用java 8按类型列表的对象属性对对象列表进行分组:JAVA - using java 8 to group list of object by object attribute of type list: JAVA 使用Java 8流对象将列表对象转换为自定义Map - Converting list object into custom Map using Java 8 stream object 如何在 Java Stream 中获取每种类型(按属性选择)的第一个 object(按功能排序) - How to get the first object (with any ordered by function) of each type (selected by attribute) in Java Stream 使用流从地图对象列表中仅获取键 - Get only key from List of Map object using stream 基于 object 类型的 object 到 map 的组列表 - Group list of object to a map based on object type Java 8列表 <Map<String, Object> &gt;列表 <Map<String, Object> &gt;按键分组并按值计数 - Java 8 List<Map<String, Object>> to List<Map<String, Object>> group by key and count by value
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM