使用Java 8中的Stream API和Collectors.groupingBy()方法来实现列表按照手机号进行分组,并将其余数据以逗号分割生成一个新的列表。\n\n假设我们有一个名为Person的类,其中包含手机号和其他数据字段:\n\njava\npublic class Person {\n private String phoneNumber;\n private String otherData;\n\n // 构造方法、getter和setter省略\n}\n\n\n现在,我们有一个名为persons的List,我们可以按照手机号进行分组并生成一个新的List,其中每个字符串包含相同手机号的其他数据字段以逗号分割。\n\njava\nList<Person> persons = new ArrayList<>();\n// 添加persons数据\n\nMap<String, List<Person>> groupedPersons = persons.stream()\n .collect(Collectors.groupingBy(Person::getPhoneNumber));\n\nList<String> result = groupedPersons.values().stream()\n .map(list -> String.join(",", list.stream().map(Person::getOtherData).collect(Collectors.toList())))\n .collect(Collectors.toList());\n\n\n在上面的代码中,我们首先使用Collectors.groupingBy()方法按照手机号对persons进行分组,得到一个Map<String, List<Person>>。然后,我们使用Stream.map()方法将每个分组中的Person对象转换为其它数据字段的字符串值,并使用String.join()方法以逗号分割。最后,我们使用Collectors.toList()方法将结果收集到一个新的List中。\n\n这样,我们就得到了一个新的List,其中每个字符串都包含相同手机号的Person对象的其他数据字段以逗号分割。

Java 8 Stream API分组List数据: 按手机号聚合其他数据

原文地址: https://www.cveoy.top/t/topic/qjKa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录