瑾瑜i 2023-06-15 15:00 采纳率: 33.3%
浏览 28

List转特点条件的Map

一个key的集合List1 {A ,B ,C}
一个对象的集合List2,对象的某个字段为A
问:

如何实现 List2.stream().collect(Collectors.groupingBy()) 的结果的key为List1中的值,value为字段A中的like结果

如结果:
A->{A1,Acd,A!}
B->{B1,B32}
c->{C1,C/*-}


  • 写回答

3条回答 默认 最新

  • 爱吃土豆丝的打工人 河南登凌教育科技有限公司官方账号 2023-06-15 15:49
    关注
    Map<String, List<String>> result = list2.stream()
                    .filter(o -> list1.contains(o.getField()))
                    .collect(Collectors.groupingBy(
                            o -> o.getField(),
                            Collectors.mapping(
                                    o -> o.getA().like(...), // 字段A的like操作
                                    Collectors.toList()
                            )
                    ));
    

    其中,list1为List类型,表示需要按照哪些值进行分组;list2为List类型,表示需要分组的对象列表,每个对象包含两个字段:field和A,分别表示分组的依据和需要进行like操作的字段。

    在Stream流中,首先使用filter方法过滤掉不在list1中的元素,然后使用Collectors.groupingBy方法按照field字段进行分组。groupingBy方法有两个参数:第一个参数是分类函数,用于指定分组的依据;第二个参数是downstream collector,用于对每个分组的元素进行处理。在这里,我们使用了Collectors.mapping方法,将每个元素的A字段进行like操作,并将结果转换成List,最后作为value返回给上层groupingBy方法。最终得到的结果是一个Map<String, List>类型,其中key为list1中的值,value为字段A经过like操作后的结果。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月15日

悬赏问题

  • ¥15 scottplot5
  • ¥15 想问问这个建模怎么编程没有思路
  • ¥15 关于imageENview(ImageEN)中新建图层并根据鼠标位置添加图标
  • ¥100 用两台电脑局域联网进行MT5的EA参数优化,但是连接不上
  • ¥15 FastAPI报错: AsyncSession不是有效Pydantic类型
  • ¥50 这Mac系统提示虚拟内存不足,怎么解决
  • ¥15 Rs232电路无法收发数据,求帮助
  • ¥15 百度cookie扫码登录器
  • ¥15 微机原理汇编语言debug调试实验
  • ¥23 matlab可以把相图转换为庞加莱映射吗