当前位置: 首页 > article >正文

Java开发中对List<Map<String, Object>>集合去重并按大小拆分子列表

Java开发中对List< Map< String, Object > >集合去重并按大小拆分子列表

  • 一、使用场景
  • 二、实现步骤
  • 三、相关知识
  • 四、代码示例

一、使用场景

在处理大量List<Map<String, Object>>集合的数据时,为确保数据的唯一性,需要先根据Map的某个唯一标识进行去重,然后将去重后的数据切分成较小的子列表进行分组处理。

二、实现步骤

  1. 去重:通过将列表中的数据转换为Map,利用Map的键唯一性,去除重复的元素。同时,通过保留第一个出现的元素,可以确保数据的顺序。
  2. 切分:将去重后的列表按照指定大小进行切分,方便进行批量处理或分布式处理。

三、相关知识

  1. Java 8 Stream API:提供了一种函数式编程风格的处理集合数据的方式,可以进行过滤、映射、排序、聚合等操作,大大提高了代码的可读性和简洁性。

  2. Collectors工具类:提供了各种收集器,用于对 Stream 中的元素进行收集和汇总操作,如toMaptoList等。

  3. hutool 工具类:使用工具类中的ListUtil.split(list, size)方法,将列表切分为指定大小的子列表。

四、代码示例

public static void main(String[] args) {
    List<Map<String, Object>> list = new ArrayList<>();
    list.add(Map.of("id", 1, "date", "2024-01-01"));
    list.add(Map.of("id", 2, "date", "2024-01-02"));
    list.add(Map.of("id", 3, "date", "2024-01-03"));
    list.add(Map.of("id", 3, "date", "2024-01-04"));
    list.add(Map.of("id", 4, "date", "2024-01-05"));
    list.add(Map.of("id", 3, "date", "2024-01-06"));
    list.add(Map.of("id", 5, "date", "2024-01-07"));
    List<List<Map<String, Object>>> split = getLists(list);
    System.out.println(split);
}

private static List<List<Map<String, Object>>> getLists(List<Map<String, Object>> list) {
    // 去重
    List<Map<String, Object>> resultList = new ArrayList<>(list.stream()
           .collect(Collectors.toMap(
                    map -> map.get("id"), // key 为 id
                    map -> map, // value 为整个 Map
                    (existing, replacement) -> existing, // 如果有重复的 id,保留第一个出现的
                    LinkedHashMap::new // 保持顺序
            )).values());
    // 切分为 100 条一组
    return ListUtil.split(resultList, 100);
}

http://www.kler.cn/a/415187.html

相关文章:

  • 第J7周:对于RenseNeXt-50算法的思考
  • 鸿蒙面试 --- 性能优化
  • C# 基于WPF实现数据记录导出excel
  • vue3 父组件调用子组件方法
  • 【机器学习】—PCA(主成分分析)
  • 【mac】终端左边太长处理,自定义显示名称(terminal路径显示特别长)
  • 【C/C++】内存管理详解:从new/delete到智能指针的全面解析
  • Leecode刷题C语言之单调数组对的数目②
  • scrapy豆瓣爬虫
  • 数据库原理-期末重要概念总结
  • 【亚马逊云科技】使用Amazon Lightsail搭建nginx服务
  • 自然语言能开发项目? 基于Agent的AI开发团队提示词分享
  • opencv 区域提取三种算法
  • HickWall 详解
  • llamaindex实战-ChatEngine-ReAct Agent模式
  • 剖析 SpringBoot 于夕阳红公寓管理系统架构搭建的核心作用
  • Excel小功能收集笔记-01
  • 如何将多个JS文件打包成一个JS文件?
  • [Go] slice切片详解
  • SQL:多字段混合去重后编号
  • [2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(2))
  • 网安瞭望台第4期:nuclei最新poc分享
  • 算力100问☞第30问:密集计算有什么特点?
  • 电脑中的vcruntime140_1.dll文件有问题要怎么解决?一键修复vcruntime140_1.dll
  • 【力扣】541.反转字符串2
  • 银行卡OCR 识别 API 接口如何用PHP如何调用