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