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

Java--ListUtil工具类,实现将一个大列表,拆分成指定长度的子列表

文章目录

        • 前言
        • 实现代码
        • 执行结果

前言

在项目中有时会出现列表很大,无法一次性批量操作,我们需要将列表分成指定大小的几个子列表,一份一份进行操作,本文提供这样的工具类实现这个需求。

实现代码

以下为ListUtil工具类代码实现:

public class ListUtils {public static <T> List<List<T>> partition(final List<T> list, final int size) {if (list == null) {throw new NullPointerException("List must not be null");}if (size <= 0) {throw new IllegalArgumentException("Size must be greater than 0");}return new Partition<>(list, size);}private static class Partition<T> extends AbstractList<List<T>> {private final List<T> list;private final int size;/*** * @param list 传入的列表* @param size 指定的长度,每size个数据切割为一个子列表*/private Partition(final List<T> list, final int size) {this.list = list;this.size = size;}/*** 获取按指定长度拆分后,索引位置的子列表* @param index* @return*/@Overridepublic List<T> get(final int index) {//获取拆分后子列表的个数final int listSize = size();if (index < 0) {throw new IndexOutOfBoundsException("Index " + index + " must not be negative");}if (index >= listSize) {throw new IndexOutOfBoundsException("Index " + index + " must be less than size " +listSize);}final int start = index * size;final int end = Math.min(start + size, list.size());//返回子列表return list.subList(start, end);}@Overridepublic int size() {//(传入列表总长度/指定的长度)向上取整,即为拆分后子列表的个数return (int) Math.ceil((double) list.size() / (double) size);}@Overridepublic boolean isEmpty() {return list.isEmpty();}}
}
执行结果
  1. 在上述类里写个main方法用以测试结果。

      public static void main(String[] args) {List<String> list=new ArrayList<String>();for (int i = 0; i <= 2000; i++) {list.add(i+"");}//将list每2000条数据拆分成一个子列表List<List<String>> partition = ListUtils.partition(list, 2000);System.out.println("将list每2000条数据拆分成一个子列表:");System.out.println("子列表个数:"+partition.size());System.out.println("第二个子列表的内容:");partition.get(1).forEach(System.out::print);System.out.println("-------------------------------------------------------");System.out.println("将list每10条数据拆分成一个子列表:");List<List<String>> partition1 = ListUtils.partition(list, 10);System.out.println("子列表个数:"+partition1.size());System.out.println("第三个子列表的内容:");partition1.get(2).forEach(s -> {System.out.print(s+" ");});}
    
  2. 执行main方法,得到结果如下:
    在这里插入图片描述

  3. 分析结果

    将list每2000条数据拆分成一个子列表后,子列表个数为2,第一个子列表里的内容{0,1,…,1998,1999},第二个子列表的内容为{2000}。
    将list每10条数据拆分成一个子列表后,子列表个数为201,分别为{0,1,…,8,9},……,{1990,1991,…,1998,1999},{2000}。
    结果符合我们的要求,通过这个工具类,我们实现了所需功能。

相关文章:

Java--ListUtil工具类,实现将一个大列表,拆分成指定长度的子列表

文章目录 前言实现代码执行结果 前言 在项目中有时会出现列表很大&#xff0c;无法一次性批量操作&#xff0c;我们需要将列表分成指定大小的几个子列表&#xff0c;一份一份进行操作&#xff0c;本文提供这样的工具类实现这个需求。 实现代码 以下为ListUtil工具类代码实现…...

SpringSecurity 密码加密登录

SpringSecurity 密码加密登录 1.前端所需文件2.后端所用工具类3.登录代码4.灵魂一问 1.前端所需文件 import JSEncrypt from jsencrypt/bin/jsencrypt.min// 密钥对生成 http://web.chacuo.net/netrsakeypairconst publicKey MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqz…...

大模型实战作业03

大模型实战作业03 注&#xff1a; 因为微调数据较少&#xff0c;没有显示出个人助手的名字...

【AI视野·今日Sound 声学论文速览 第四十四期】Tue, 9 Jan 2024

AI视野今日CS.Sound 声学论文速览 Tue, 9 Jan 2024 Totally 27 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Sound Papers DJCM: A Deep Joint Cascade Model for Singing Voice Separation and Vocal Pitch Estimation Authors Haojie Wei, Xueke Cao, Wenbo Xu…...

Windows Copilot 更新及使用教程

Windows Copilot 是一款由微软开发的人工智能辅助工具&#xff0c;可以通过学习用户的操作习惯和上下文&#xff0c;自动完成代码编写和其他重复性任务。它可以帮助开发人员提高工作效率&#xff0c;减少重复劳动。 以下是关于Windows Copilot的更新和使用教程的一些信息&…...

【Android开发】不同Activity之间的数据回传实例(一)摘桃子游戏

一、功能介绍 该项目实现的功能主要有&#xff1a; 在首页显示一个按钮点击该按钮跳转到桃园页面在桃园页面&#xff0c;点击桃子会弹窗显示摘到几个桃子&#xff0c;同时被点击桃子消失&#xff0c;总桃子数1点击退出桃园会返回首页&#xff0c;首页桃子数会根据点击的桃子数…...

增量式PID和脉冲轴组合控制阀门开度(算法介绍)

这篇博客我们以S7-1200PLC平台来举例,介绍我们的PID闭环控制器如何控制脉冲轴实现阀门角度控制。SMART PLC PID控制器控制伺服驱动器实现关节角度控制详细内容请参考下面文章: https://rxxw-control.blog.csdn.net/article/details/129658364https://rxxw-control.blog.csdn…...

解决Vue.js Devtools未检测到Vue实例的问题

解决Vue.js Devtools未检测到Vue实例的问题 解决Vue.js Devtools未检测到Vue实例的问题1. 确保Vue.js已正确加载1.1 在HTML文件中直接引入1.2 在构建工具&#xff08;如Webpack&#xff09;中配置引入1.3 检查与验证 2. 检查Vue.js Devtools扩展安装状态2.1 打开Chrome浏览器扩…...

【Java基础】进程与线程,并发与并行,CPU单核与多核

目录 1 进程与线程2 CPU单核与多核 1 进程与线程 进程与线程基本单位的对象不同 进程是操作系统进行资源分配&#xff08;包括cpu、内存、磁盘IO等&#xff09;的最小单位线程是CPU调度和分配的基本单位 CPU看不到进程&#xff0c;只能看到待分配的一些线程 并发与并行 并发&…...

git修改最新提交(commit)信息

一、修改最近一次commit信息 1、首先通过git log查看commit信息 2、使用命令git commit --amend进入命令命令模式&#xff0c;按i进入编辑模式&#xff0c;修改好commit信息后按Esc键退出编辑模式&#xff0c;然后输入:wq保存编辑信息&#xff08;注意使用英文输入法&#xf…...

想寻找Axure的替代品?我们已经试用了10+款设计工具,来看看吧!

Axure是许多产品经理和设计师进入快速原型设计的首选工具&#xff0c;但Axure的使用成本相对较高&#xff0c;学习曲线陡峭&#xff0c;许多设计师正在寻找可以取代Axure的原型设计工具&#xff0c;虽然现在有很多可选的设计工具&#xff0c;但质量不均匀&#xff0c;可以取代A…...

报文大小限制、请求体类型总结

文章目录 1. 各节点请求体有无限制1.1 http协议1.2 TCP/IP层限制1.3 浏览器1.4 nginx1.5 gateway1.6 tomcat1.7 springboot1.8 内存、磁盘处理不了一切白搭 2. 请求体类型2.1 application/x-www-form-urlencoded2.2 multipart/form-data2.3 application/json2.4 text/plain2.5 …...

rknn加载onnx时报错 GLIBC=2.29 no found librknnc.so

rknn 中onnx转rknn在虚拟机中运行时发现报错. GLIBC2.29 no found /****/librknnc.so 昨天还正常的, 今天装了个ftp 和宝塔面板就出错了. 我估计根据报错地址, 找到了librknnc.so文件, 权限也给了777仍然不行 , 我怀疑是GLIBC的版本不对 ,网上给的方法是下载源码, 然后自己手动…...

ASP .net core微服务实战(杨中科)

背景&#xff1a; 主要是思考下&#xff0c;我们为什么要用微服务&#xff1f; 微服务我现在理解是&#xff1a;提供了我们一种模块化的手段&#xff0c;一个服务负责一种类型的业务&#xff0c;是一种面对复杂问题进行拆分的方式&#xff0c;但是也会引入一些中间件&#xf…...

使用命令行方式搭建uni-app + Vue3 + Typescript + Pinia + Vite + Tailwind CSS + uv-ui开发脚手架

使用命令行方式搭建uni-app Vue3 Typescript Pinia Vite Tailwind CSS uv-ui开发脚手架 项目代码以上传至码云&#xff0c;项目地址&#xff1a;https://gitee.com/breezefaith/uniapp-vue3-ts-scaffold 文章目录 使用命令行方式搭建uni-app Vue3 Typescript Pinia V…...

VUE+bpmn.js实现工作流

1、安装bpmn.js npm install bpmn-js7.3.1 // 我安装的版本是7.3.1npm install bpmn-js-properties-panel0.37.2npm install bpmn-moddle7.1.3 npm install --save camunda-bpmn-moddle 2、配置axios&#xff0c;在main.js中引入axios import axios from axiosVue.proto…...

微信小程序Burp抓包

方法有很多&#xff0c;工具也各有差异&#xff0c;主要是学代理流量的思路 Burp流量代理工具小程序 一、Burp证书导入 1、开启代理 开启浏览器的代理&#xff0c;火狐推荐FoxyProxy&#xff0c;Google推荐SwitchyOmega&#xff0c;设置代理为127.0.0.1:8080。 2、下载证书…...

基础篇_面向对象(什么是对象,对象演化,继承,多态,封装,接口,Service,核心类库,异常处理)

文章目录 一. 什么是对象1. 抽取属性2. 字段默认值3. this4. 无参构造5. 抽取行为 二. 对象演化1. 对象字段演化2. 对象方法演化3. 贷款计算器 - 对象改造4. 静态变量5. 四种变量 三. 继承1. 继承语法2. 贷款计算器 - 继承改造3. java 类型系统4. 类型转换1) 基本类型转换2) 包…...

【一、测试基础】Java基础语法

Java 的用法及注意事项有很多&#xff0c;今天的目标是了解Java基础语法&#xff0c;且能够输出"hello world" 几个基础的概念 对象&#xff1a;对象是类的一个实例&#xff0c;有状态和行为。一只猫是一个对象&#xff0c;猫的状态有&#xff1a;颜色、名字、品种&…...

社交距离 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 疫情期间,需要大家保证一定的社交距离,公司组织开交流会议,座位有一排共N个座位,编号分别为[0…N-1],要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。 满足:每当一个员工进入时,…...

观察 Taotoken 在多地域请求下的延迟与稳定性表现

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察 Taotoken 在多地域请求下的延迟与稳定性表现 对于依赖大模型 API 进行开发的团队而言&#xff0c;服务的延迟与稳定性是影响开…...

城通网盘解析工具:3步获取高速直连下载地址的终极方案

城通网盘解析工具&#xff1a;3步获取高速直连下载地址的终极方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否还在为城通网盘的蜗牛下载速度而烦恼&#xff1f;每次下载大文件都要经历漫长的…...

STM32CubeMX外设配置实战——以F103C8T6的CAN与DMA为例

1. STM32CubeMX与F103C8T6开发基础 STM32CubeMX是ST官方推出的图形化配置工具&#xff0c;它能极大简化STM32系列MCU的外设初始化流程。对于刚接触STM32开发的工程师来说&#xff0c;这个工具就像"乐高积木说明书"——通过可视化操作就能完成80%的底层配置工作。我最…...

HS2-HF Patch:为《Honey Select 2》注入新生命的魔法补丁

HS2-HF Patch&#xff1a;为《Honey Select 2》注入新生命的魔法补丁 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是不是曾经打开《Honey Select 2》时&am…...

3步解锁鸣潮120帧:你的终极游戏体验优化指南

3步解锁鸣潮120帧&#xff1a;你的终极游戏体验优化指南 【免费下载链接】WaveTools &#x1f9f0;鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为《鸣潮》游戏中的60帧限制而烦恼吗&#xff1f;明明拥有强大的硬件配置&#xff0c;却无法充…...

Boss直聘职位数据自动化采集:Python爬虫架构设计与工程实践

1. 项目概述与核心价值最近在技术社区里&#xff0c;看到不少朋友在讨论一个叫longsizhuo/BossZhiPin_Job_Search的项目。光看名字&#xff0c;你大概就能猜到&#xff0c;这是一个跟“Boss直聘”和“职位搜索”相关的自动化工具。作为一个在招聘数据分析和自动化领域摸爬滚打了…...

从TPM到机密计算:远程证明技术原理与zap1项目实践指南

1. 项目概述与核心价值最近在整理一些零散的学习笔记时&#xff0c;发现了一个挺有意思的项目&#xff0c;叫Frontier-Compute/zap1-learning-attestation。乍一看这个标题&#xff0c;可能有点让人摸不着头脑&#xff0c;尤其是对于刚接触可信计算或者硬件安全领域的朋友来说。…...

可穿戴电子模块化连接方案:5mm微型按扣实现电路板与织物的可插拔连接

1. 项目概述与核心思路在折腾可穿戴电子项目时&#xff0c;最让人头疼的问题之一&#xff0c;就是如何让电路板与衣物既可靠连接&#xff0c;又能方便地拆下来。传统的做法要么是用导电胶带粘&#xff08;不牢靠、易氧化&#xff09;&#xff0c;要么是直接把线焊死在板子上然后…...

Blitz.js全栈开发框架:零API理念与Next.js深度集成实战

1. 项目概述&#xff1a;一个颠覆性的全栈开发框架如果你和我一样&#xff0c;在过去的几年里&#xff0c;一直在React生态圈里打转&#xff0c;从Create React App到Next.js&#xff0c;再到尝试自己搭建一套包含身份验证、数据层、API路由的完整应用&#xff0c;那你一定对那…...

基于MCP协议构建AI编程助手:unloop-mcp文件系统服务器实战指南

1. 项目概述&#xff1a;一个面向开发者的“解循环”MCP服务器最近在GitHub上看到一个挺有意思的项目&#xff0c;叫Escapepaleolithic247/unloop-mcp。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但如果你是一个经常和AI助手&#xff08;比如Claude、Cursor等&am…...