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

devtools/2024/11/28 8:17:39/

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)方法,将列表切分为指定大小的子列表。

四、代码示例

java">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 为 idmap -> map, // value 为整个 Map(existing, replacement) -> existing, // 如果有重复的 id,保留第一个出现的LinkedHashMap::new // 保持顺序)).values());// 切分为 100 条一组return ListUtil.split(resultList, 100);
}

http://www.ppmy.cn/devtools/137609.html

相关文章

JavaEE 【知识改变命运】03 多线程(2)

文章目录 复习1.1 进程和线程的区别1.2 线程创建的方式1.3 两者创建的区别 2 多线程2.1多线程的优势-增加了运行的速度2.2Thread类及常用的方法2.2.1常用见的构造方法2.2.2获取当前类的信息2.2.3Thread 的⼏个常⻅属性1 演示后台线程2 线程是否存活3 名称4 线程中断5 等待⼀个线…

STM32的一些知识技巧

STM32的一些知识技巧 STM32命名规则 查看代码编译所占用的flash和SRAM的大小 单位为字节&#xff08;Byte&#xff09; 1、使用keil编译结果进行计算 2、查看.map文件 STM32启动模式 主闪存启动地址为0x08000000 查看程序段/函数执行时间 global.prop文件 保存字体配置&…

【机器学习】决策树详解

摘要&#xff1a; 本文深入探讨机器学习中的决策树算法。首先介绍决策树的基本概念与原理&#xff0c;包括信息熵、信息增益等核心概念&#xff0c;详细阐述决策树的构建过程&#xff0c;如特征选择、节点分裂与停止条件等。通过大量代码示例展示决策树在数据分类与回归任务中的…

C# 索引器 详解(含对照例子)

索引器 是 C# 中的一种特殊成员&#xff0c;允许你像访问数组那样&#xff0c;通过索引来访问对象的元素。它使得在类或结构中以集合的方式获取或设置值变得更加直观。 主要特点&#xff1a; 语法&#xff1a;索引器使用 this 关键字。可访问性&#xff1a;可以使用不同的访问…

实现一个可配置的TCP设备模拟器,支持交互和解析配置

前言 诸位在做IOT开发的时候是否有遇到一个问题&#xff0c;那就是模拟一个设备来联调测试&#xff0c;虽然说现在的物联网通信主要是用mqtt通信&#xff0c;但还是有很多设备使用TCP这种协议交互&#xff0c;例如充电桩&#xff0c;还有一些工业设备&#xff0c;TCP这类报文交…

28.UE5实现对话系统

目录 1.对话结构的设计&#xff08;重点&#xff09; 2.NPC对话接口的实现 2.1创建类型为pawn的蓝图 2.2创建对话接口 3.对话组件的创建 4.对话的UI设计 4.1UI_对话内容 4.2UI_对话选项 4.3UI_对话选项框 5.对话组件的逻辑实现 通过组件蓝图&#xff0c;也就是下图中的…

Kafka面试题(三)-- 内含面试重点

文章目录 1、Kafka中如何做到数据唯一&#xff08;数据去重&#xff09;&#xff08;面试重点&#xff09;2、你知道 Kafka 是如何做到消息的有序性&#xff1f;【面试重点】3、kafka是如何处理数据乱序问题的。4、zk在Kafka集群中有何作用&#xff1f;5、简述Kafka集群中的Lea…

IDEA全局设置-解决maven加载过慢的问题

一、IDEA全局设置 注意&#xff1a;如果不是全局设置&#xff0c;仅仅针对某个项目有效&#xff1b;例在利用网上教程解决maven加载过慢的问题时&#xff0c;按步骤设置却得不到解决&#xff0c;原因就是没有在全局设置。 1.如何进行全局设置 a.在项目页面&#xff0c;点击f…