可以使用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进行分组根据手机号相同的数据将其余数据以分割

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

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