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,其中键是手机号,值是对应手机号的姓名列表。
原文地址: https://www.cveoy.top/t/topic/qjJd 著作权归作者所有。请勿转载和采集!