为了账号安全,请及时绑定邮箱和手机立即绑定

lambda groupingBy高级问题 List<A>怎么转换成List<B>

lambda groupingBy高级问题 List<A>怎么转换成List<B>

一只甜甜圈 2018-12-11 21:22:29
题目描述lambda groupingBy高级问题 List<A>怎么转换成List<B>题目来源及自己的思路查了很多资料,发现大多数网上都是教怎么把List转换成Map<String,List>我知道grupingBy方法有三个参数按道理。。如果自己定义输出的容器B,然后再定义怎么收集,或许可以实现?不知道怎么写...相关代码public class A{  private String name;  private String value; }public class B {  private String name;  private List<String> values; }List<A> list = new ArrayList<>();list.add(new A("name1", "1"));list.add(new A("name1", "2"));list.add(new A("name2", "3"));             list.add(new A("name2", "4"));list.add(new A("name2", "5"));希望得到这样:List<B> [     {         "name":"name1"          "values":[             "1",             "2"          ]     },     {         "name":"name2"          "values":[             "3",             "4",             "5"          ]     }     ]
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

public static void main(String[] args) {

    List<AA> list = new ArrayList<AA>();    list.add(new AA("name1", 1));    list.add(new AA("name1", 2));    list.add(new AA("name2", 3));    list.add(new AA("name2", 4));    list.add(new AA("name2", 5));    List<B> listB = list.stream().collect(Collectors.groupingBy(new Function<AA, String>() {
        @Override        public String apply(AA aa) {            return aa.getName();
        }
    }, HashMap::new, Collectors.mapping(new Function<AA, Integer>() {
        @Override        public Integer apply(AA aa) {            return aa.getValue();
        }
    }, Collectors.toList()))).entrySet().stream()
            .map(new Function<Map.Entry<String, List<Integer>>, B>() {
                @Override                public B apply(Map.Entry<String, List<Integer>> stringListEntry) {                    return new B(stringListEntry.getKey(),stringListEntry.getValue());
                }
            }).collect(Collectors.toList());

    System.out.println(JSON.toJSONString(listB));
}
很久不写了,可能写的不太好,A和B的value我都改成Integer了


查看完整回答
反对 回复 2018-12-11
  • 1 回答
  • 0 关注
  • 633 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信