可以使用 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,其中键是手机号,值是对应手机号的姓名列表。

Java List 分组:根据手机号将其他数据以逗号分割

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

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