简体   繁体   English

Java 8 Lambda地图 <Integer,List<Object> 为每个对象创建一个新对象并将此新对象添加到列表中

[英]Java 8 Lambda Map<Integer,List<Object> for each create a new object and add this new objet in a list

Java 8 Lambda Map for each create a new object and add this new objet in a list 每个Java 8 Lambda Map都会创建一个新对象并将此新对象添加到列表中

This is my firts step 这是我的第一步

Map<Integer, List<Obj>> objGroupBy = list.stream().collect(Collectors.groupingBy(Obj::getSomething)); 


List<Obj2> lst2= new ArrayList<Obj2>();

for (Entry<Integer, List<Obj>> entry : objGroupBy .entrySet())
{
    lst2.add(new Obj2(entry.getKey().intValue(), entry.getValue()));
}

I want to know if it possible to do it in lambda Thanks! 我想知道是否可以用lambda来做谢谢!

Equivalent to your code: 等效于您的代码:

List<Obj2> lst2 = list.stream()
                      .map(o -> new Obj2(o.getSomething(), o))
                      .collect(Collectors.toList());

Now if you really want to start the same way: 现在,如果您真的想以相同的方式开始:

List<Obj2> lst2 = list.stream()
                      .collect(Collectors.groupingBy(Obj::getSomething))
                      .entrySet()
                      .stream()
                      .map(e -> new Obj2(e.getKey(), e.getValue()))
                      .collect(Collectors.toList());

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM