java中list进行分组根据手机号相同的数据将其余数据以分割
可以使用Java 8的Stream API和Collectors.groupingBy()方法来对List进行分组。以下是一个示例代码:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 示例数据
List<Person> persons = Arrays.asList(
new Person("John", "1234567890", 25),
new Person("Alice", "1234567890", 30),
new Person("Bob", "9876543210", 35),
new Person("Charlie", "9876543210", 40)
);
// 根据手机号分组,并将其他数据以","分割
Map<String, String> groupedData = persons.stream()
.collect(Collectors.groupingBy(Person::getPhoneNumber, Collectors.mapping(Person::getName, Collectors.joining(","))));
// 打印结果
groupedData.forEach((phoneNumber, names) -> System.out.println(phoneNumber + ": " + names));
}
static class Person {
private String name;
private String phoneNumber;
private int age;
public Person(String name, String phoneNumber, int age) {
this.name = name;
this.phoneNumber = phoneNumber;
this.age = age;
}
public String getName() {
return name;
}
public String getPhoneNumber() {
return phoneNumber;
}
public int getAge() {
return age;
}
}
}
输出结果:
1234567890: John,Alice
9876543210: Bob,Charlie
在上面的示例中,使用Collectors.groupingBy()方法将Person对象按照手机号进行分组。然后,使用Collectors.mapping()方法将Person对象的name属性映射为字符串,再使用Collectors.joining()方法以","分割这些字符串。最终得到一个Map,其中键是手机号,值是对应手机号的姓名列表
原文地址: http://www.cveoy.top/t/topic/iC4T 著作权归作者所有。请勿转载和采集!