java8将list根据年龄分组后list中名称用逗号分隔转成map
java8将list根据年龄分组后list中名称用逗号分隔转成map
在Java 8中,可以使用Stream API来处理集合数据,从而实现基于某个属性(如年龄)对列表进行分组,并且将分组内的某个属性(如名称)用逗号分隔后放入Map中。下面是一个示例,展示如何将一个包含Person对象的List根据年龄分组,并将每个组内的Person对象的名称用逗号分隔后存入Map中。
首先,定义一个简单的Person类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | public class Person { private String name; private int age; public Person(String name, int age) { this .name = name; this .age = age; } public String getName() { return name; } public int getAge() { return age; } } |
然后,使用Java 8的Stream API来处理这个List:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; public class Main { public static void main(String[] args) { List<Person> people = Arrays.asList( new Person( "Alice" , 30 ), new Person( "Bob" , 20 ), new Person( "Charlie" , 30 ), new Person( "David" , 20 ), new Person( "Eve" , 35 ) ); // 使用Collectors.groupingBy进行分组,然后使用Collectors.mapping收集每个分组的names,并使用Collectors.joining(",")将它们连接起来 Map<Integer, String> groupedByName = people.stream() .collect(Collectors.groupingBy( Person::getAge, // 分组依据:年龄 Collectors.mapping(Person::getName, // 将Person映射为name Collectors.joining( ", " )) // 使用逗号和空格连接names )); System.out.println(groupedByName); } } |
这段代码首先通过stream()
方法获取people
列表的流,然后使用Collectors.groupingBy
进行分组。groupingBy
的第一个参数是一个函数,用于指定分组的键(这里是Person::getAge
),第二个参数是一个收集器,这里我们使用Collectors.mapping
来将每个分组中的Person
对象映射到它们的名称上,并且通过Collectors.joining(", ")
将这些名称用逗号和空格连接起来。最终,我们得到一个Map,其键是年龄,值是对应年龄组中所有人的名称,用逗号分隔。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2021-02-22 java环境变量配置
2021-02-22 websocket前后端及时通讯数据库增加一条记录页面及时更新--自己实现
2021-02-22 websocket实现数据库更新时前端页面实时刷新