Java开发 之分割List、获取两个List中不同的元素

Java中List按指定长度分割成多个List 项目背景:我们一个APP需要对6万余人同时推送消息,但是极光推送能力每次只有500,所以我们需要将一个包含6万多元素的List按500的长度为一组分割成多个List。 代码: //list按指定长度分割方法 private List<List<PushMessageExcel>> splitList(List<PushMessageExcel> messages... 阅读详情

Set和List集合中contains()方法执行效率问题:
Set.contains()的时间复杂度是O(1),而List.contains()的时间复杂度是O(n)。
所以在判断集合中是否包含某个元素时 ,如果集合是List,就通过Set的构造方法转为Set集合进行判断。

/**
 * 把一个List分割成多个小的List
 * @param list 被分割的List
 * @param subLength 分割后每个小List的长度
 * @param <T> List集合类型
 * @return List<List<T>>
 */
public static <T> List<List<T>> groupList(List<T> list, int subLength) {
    List<List<T>> listGroup = new ArrayList<>();
    int size = list.size();
    for (int i = 0; i < size; i += subLength) {
        if (i + subLength > size) {
            subLength = size - i;
        }
        List<T> newList = list.subList(i, i + subLength);
        listGroup.add(newList);
    }
    return listGroup;
}
/**
 * 获取两个List中不同的元素
 *
 * @param list1
 * @param list2
 * @param <T>
 * @return
 */
public static <T> List<T> getDifferent(List<T> list1, List<T> list2) {
    Map<T, Integer> map = new HashMap<>(list1.size() + list2.size());
    List<T> diff = new ArrayList<>();
    List<T> maxList = list1;
    List<T> minList = list2;
    if (list2.size() > list1.size()) {
        maxList = list2;
        minList = list1;
    }
    for (T i : maxList) {
        map.put(i, 1);
    }
    for (T i : minList) {
        Integer difValue = map.get(i);
        if (difValue != null) {
            map.put(i, ++difValue);
            continue;
        }
        map.put(i, 1);
    }
    for (Map.Entry<T, Integer> entry : map.entrySet()) {
        if (entry.getValue() == 1) {
            diff.add(entry.getKey());
        }
    }
    return diff;
}
    /**
     * 找出两个集合中相同的元素
     *
     * @param collmax
     * @param collmin
     * @return
     */
    public static Collection getSame(Collection collmax, Collection collmin) {
        //使用LinkedList防止差异过大时,元素拷贝
        Collection csReturn = new LinkedList();
        Collection max = collmax;
        Collection min = collmin;
        //先比较大小,这样会减少后续map的if判断次数
        if (collmax.size() < collmin.size()) {
            max = collmin;
            min = collmax;
        }
        //直接指定大小,防止再散列
        Map<Object, Integer> map = new HashMap<Object, Integer>(max.size());
        for (Object object : max) {
            map.put(object, 1);
        }
        for (Object object : min) {
            if (map.get(object) != null) {
                csReturn.add(object);
            }
        }
        return csReturn;
    }
分割List为多份:Java中List.subList使用的陷阱 实际开发中,经常使用批量插入,但是sql有语句的长度限制,以及传输大小的限制,所以当我们要插入的每条数据很大时,就需要分多次进行批量插入,这个时候就需要将List集合进行分割。 List分割的常用方式就是调用subList()方法,方法使用很简单,和 ... 阅读详情

相关推荐

Spring Boot Swagger未授权访问漏洞:原理、风险与修复方案详解

在微服务架构中,API文档管理是开发与运维的重要环节。Swagger作为RESTful API文档生成与调试的标准化工具,通过OpenAPI规范自动生成交互式接口文档,极大提升了开发效率。然而,其默认配置往往缺乏访问控制,导致文档端点直接暴露,形成未授权访问漏洞。从技术原理看,该漏洞源于Spring Boot等框架集成Swagger时,相关端点未纳入安全框架的拦截范围,攻击者可通过扫描常见路径获取完整的接口定义与数据结构。这不仅会造成敏感信息泄露,更可能成为越权操作、数据篡改等深度攻击的入口点。在工程实践中

weixin_42524171的博客 496

java-两个数组,寻找多出来的元素

java-两个数组,寻找多出来的元素

bk_huangzongbo的博客 1195

ROS2节点通信实战:用C++手写一个‘智能小车’控制模型(附完整代码)

本文详细介绍了如何使用ROS2和C++构建一个智能小车控制模型,涵盖运动控制节点、电池管理服务、参数动态配置和Rviz可视化等核心功能。通过实战项目演示ROS2节点通信机制,帮助开发者快速掌握机器人开发的关键技术,并提供了完整的代码实现和系统集成方案。

weixin_30607029的博客 261

416. 分割等和集(java)

题目描述 给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 注意: 每个数组中的元素不会超过 100 数组的大小不会超过 200 示例 1: 输入: [1, 5, 11, 5] 输出: true 解释: 数组可以分割成 [1, 5, 5] 和 [11]. 示例 2: 输入: [1, 2, 3, 5] 输出: false 解释: 数组不能分割成两个元素和相等的子集. 解法一:动态规划 0-1背包:选取物品的容积总量不能超过规定的总量。思路是:物品一个个先,容量也

m0_37605197的博客 296

强化学习之课程学习法

课程学习是一种有计划的学习方法,模拟人类学习的过程。它通过设置逐步增加难度的任务序列,让学习系统从简单的任务开始,逐渐过渡到复杂任务。这一方法可以显著提高训练效率,避免智能体一开始就面临过于复杂的任务,从而导致学习过程困难。逐步难度增加:从简单的任务开始,逐步增加任务的难度,直到智能体能够解决最复杂的任务。动态调整:根据智能体的学习进展,动态调整任务的难度,保证学习的过程始终处于一个适当的挑战性范围。

m0_64087341的博客 2694

【100%通过率】2024华为OD机试真题E卷 C++ 实现【栈数据合并/空栈压数】

向一个空栈压入正整数,每当压入一个整数时,执行以下规则(设: 栈顶至栈底整数依次编号为n1、n2...nx, n1为最新压入的整数)

MISAYAONE的博客 1553

java list集合分批取出/处理(Lists.partition)

java list集合分批取出/处理(Lists.partition)

lzy99534的博客 1740

YOLOv8改进:在C2F模块中引入RepGhost Bottleneck模块

C2F类是YOLOv8中的C2F模块的实现,它包含一个RepGhostBottleneck模块、一个卷积层和一个批归一化层。通过在C2F模块中引入RepGhost Bottleneck模块,我们可以在保持计算效率的同时提升模型的表达能力。这是因为RepGhost Bottleneck模块通过引入重复的卷积核来扩展模型的感受野,从而增加了模型对不同尺度目标的感知能力。RepGhost Bottleneck是一种用于卷积神经网络的改进模块,它可以在保持计算效率的同时提升模型的表达能力。希望以上内容对你有帮助!

IlgCrystal的博客 1306

Java 利用stream流取List中两列元素

Java 利用stream流取List中两列元素

weixin_45207712的博客 1974

AI Agent 架构的底层原理与核心机制

AI Agent五层架构实现智能闭环运转:1)感知层负责多模态信息输入与预处理;2)记忆层分类存储短期/长期记忆及知识库;3)认知层通过ReAct推理和反思机制进行决策规划;4)工具层调用外部API扩展能力边界;5)执行层完成任务输出并形成反馈闭环。五层架构通过"输入-处理-输出-优化"的联动机制,使Agent具备自主决策、持续学习和任务执行能力,突破传统LLM的局限,实现从信息处理到实际落地的完整智能体系。

女王の专属领地 494

30天入门 SAP BTP 开发系列之七:动手在 SAP BTP 上开发第一个 ABAP 程序

本教程从理论转向实践,指导如何在SAP BTP上创建首个ABAP程序。首先通过Booster向导在Trial账号中配置ABAP环境,需确保已启用Cloud Foundry并创建Space。成功创建ABAP实例后,使用ABAP Development Tool连接环境:下载服务密钥文件,导入工具获取连接URL,即可建立项目开始编码。教程提供了从环境搭建到开发工具配置的完整流程,帮助ABAP开发者快速上手BTP云开发。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1674

java 取出俩个list对象中不同值

写项目时遇到前端和后端交互时有个更新操作,取出不同的值

liu569542779的博客 1373

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象

在 UG NX中,有时需要批量删除某文件夹下多个.prt文件中固定一些图层中的体对象和曲线对象,这时如果采用手动逐个打开模型,并选择针对的图层删除,即耗时也容易遗漏,因此采用外部模式来处理比较方便。本文介绍批量删除某些图层中的体对象和曲线对象。

GimiGimmy 3035

Java List集合分割

Java List集合分割 在某些业务场景里,我们需要将一个大的List集合分割成多个小的集合,将小的集合作为业务参数的入参 1.代码如下 import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CommonUtil { /** * 按指定大...

qq_35634447的博客 2360

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java字符串分割为数组,数组转List,List转ArrayList等操作学习

java字符串分割为数组,数组转List,List转ArrayList等操作学习java字符串分割为数组数组转List集合判断list中是否包含某元素如果List集合包含某元素,则删除该元素 java字符串分割为数组 定义字符串String str = “123,456,789”。 用“,”分割字符串,String[] split = str .split(","); 得到一个数组。 数组转Lis...

不一样的自己的博客 5876

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java 两个逗号串,获取相同字符串 以及 不同字符串

获取相同的字符串 String str1 = "A,B,C,D,E,F,G"; String str2 = "C,D,Z,H,R"; String [] strs1 = str1.split("[,]");//防止str1为null List<String> list = Arrays.asList(strs1);//防止strs1为null String [] strs2 = s...

guochanof的专栏 1995

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java8中Stream的使用以及分割list

一、Steam的优势  java8中Stream配合Lambda表达式极大提高了编程效率,代码简洁易懂(可能刚接触的人会觉得晦涩难懂),不需要写传统的多线程代码就能写出高性能的并发程序 二、项目中遇到的问题 由于微信接口限制,每次导入code只能100个,所以需要分割list。但是由于code数量可能很大,这样执行效率就会很低。 1.首先想到是用多线程写传统并行程序,但是博主不是很熟练,写

lee06152433的博客 7万+

对List进行分割的几种方式

1、使用google guava对List进行分割 需要引入google guava依赖,引入后可以使用,简单方便但是需要引入额外依赖,如果不介意可以使用。 //假设查询出很多用户信息 List<User> users = userService.findAll(); //按每100个一组分割 List<List<User>> parts = Lists.partition(users, 100); parts.stream().forEach(list -> {

CodersCoder的博客 3万+

java 平均分割list_Java 实现将List平均分成若干个集合

1.初衷是由于调用银行接口的批量处理接口时,每次最多只能处理500条数据,但是当数据总数为510条时。我又不想第一次调用处理500条,第二次调用处理10条数据,我想要的是每次处理255条数据。下面展示的是我的处理方法2.写了一个简单的ListUtils:package com.example.springboottest.common.util;import java.util.ArrayList...

weixin_39915700的博客 2177

java 平均分割list_java 把list集合平均分成多个小的list

package com;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import ch.qos.logback.core.net.SyslogOutputStream;public class TestList {public static void m...

weixin_35728636的博客 941

Java8 Stream分割list集合

使用Java8 Stream分割list集合,写好的工具类,可以直接用 package com.example.java8; import com.example.excel.Student; import org.apache.commons.collections4.CollectionUtils; import java.util.ArrayList; import java.util....

qq_40548741的博客 4万+

java把一个list分割成多个list存入map中(实例)

java把一个list分割成多个list存入map中(实例) 这都是最近我写工具遇到的一些点, 这些点就是指我在网上没搜到答案,然后实际上我为此花费了时间的 public static void main(String[] args) { List&lt;String&gt; fsList=new ArrayList&lt;Stri...

Mia专栏 1406

Java之list分割

Java之list分割

demonSily的博客 4738

arraylist切割_Java List分割测试

import java.util.ArrayList;import java.util.List;import org.apache.poi.ss.formula.functions.T;/*** Project Name:FireWeb* File Name:TestListSplit.java* Package Name:* Date:2017年10月16日下午3:13:01**//*** C...

weixin_33551941的博客 315

java list分割

类型一:list按照指定每个list长度分割       /** * 分隔列表 * @param list * @param len * @return */  public static List&lt;List&lt;String&gt;&gt; splitList(List&lt;String&gt; list, int len) { if (list == null || li...

mnmnmnmiiiin_mi的博客 1632

Java分割集合 Java分割 list java分割集合 java分割list Java 平均分割集合列表

需求,生产二维码内容有限制,并且 内容过多,会导致二维码很臃肿 扫描不出来,之前是用 谷歌的,但是还有一个问题就是,分割好的集合数量不均匀,纯Java jdk实现。

半只 1587
上一篇: Spring 之@Autowired注入集合类List、Set、Map
下一篇: Spring容器创建源码解析
yyangqqian
博客等级 码龄15年 406粉丝 406原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值