可以使用Java 8的流操作和Collectors.groupingBy()方法来实现列表分组。具体步骤如下:

  1. 创建一个用于存储原始数据的List。
  2. 使用Collectors.groupingBy()方法将手机号作为键进行分组。
  3. 使用Collectors.mapping()方法将除手机号外的数据以逗号分隔生成一个新的字符串。
  4. 将每个分组的数据转换为一个新的对象,包含手机号和以逗号分隔的数据。
  5. 将分组后的数据存储到一个新的List中。

下面是一个示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        List<Data> dataList = new ArrayList<>();
        dataList.add(new Data("123456789", "A"));
        dataList.add(new Data("123456789", "B"));
        dataList.add(new Data("987654321", "C"));
        dataList.add(new Data("987654321", "D"));

        List<GroupedData> groupedDataList = dataList.stream()
                .collect(Collectors.groupingBy(Data::getPhoneNumber,
                        Collectors.mapping(Data::getData, Collectors.joining(","))))
                .entrySet().stream()
                .map(entry -> new GroupedData(entry.getKey(), entry.getValue()))
                .collect(Collectors.toList());

        // 打印结果
        for (GroupedData groupedData : groupedDataList) {
            System.out.println("手机号: " + groupedData.getPhoneNumber());
            System.out.println("数据: " + groupedData.getData());
            System.out.println();
        }
    }

    static class Data {
        private String phoneNumber;
        private String data;

        public Data(String phoneNumber, String data) {
            this.phoneNumber = phoneNumber;
            this.data = data;
        }

        public String getPhoneNumber() {
            return phoneNumber;
        }

        public String getData() {
            return data;
        }
    }

    static class GroupedData {
        private String phoneNumber;
        private String data;

        public GroupedData(String phoneNumber, String data) {
            this.phoneNumber = phoneNumber;
            this.data = data;
        }

        public String getPhoneNumber() {
            return phoneNumber;
        }

        public String getData() {
            return data;
        }
    }
}

以上代码定义了两个类:Data表示原始数据,GroupedData表示分组后的数据。在示例中,首先创建了一个包含原始数据的List,然后使用流操作进行分组和转换,最后将分组后的数据存储到一个新的List中。最后,通过循环打印结果。

运行上述代码将输出以下结果:

手机号: 123456789
数据: A,B

手机号: 987654321
数据: C,D

在上述示例中,我们假设原始数据中的手机号是字符串类型,你可以根据实际情况进行修改

java中list进行分组根据手机号相同的数据将其余数据以分割生成一个新的list

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

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