使用PHP开发的同学都知道array_chunk函数,其作用是将数据进行切割分段,但是在 java中却找不到合适的给List和Map分段的函数。

在此我写了一个切割工具,分享一下

import org.springframework.util.CollectionUtils;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

/**

* @author lanfangyi

* @version 1.0

* @since 2019/2/28 20:39

*/

public class CollectionUtil {

private CollectionUtil(){

}

/**

* 将map切成段,作用与PHP的array_chunk函数相当

*

* @param chunkMap 被切段的map

* @param chunkNum 每段的大小

* @param map的key类型

* @param map的value类型 如果是自定义类型,则必须实现equals和hashCode方法

* @return

*/

public static List> mapChunk(Map chunkMap, int chunkNum) {

if (chunkMap == null || chunkNum <= 0) {

List> list = new ArrayList<>();

list.add(chunkMap);

return list;

}

Set keySet = chunkMap.keySet();

Iterator iterator = keySet.iterator();

int i = 1;

List> total = new ArrayList<>();

Map tem = new HashMap<>();

while (iterator.hasNext()) {

k next = iterator.next();

tem.put(next, chunkMap.get(next));

if (i == chunkNum) {

total.add(tem);

tem = new HashMap<>();

i = 0;

}

i++;

}

if(!CollectionUtils.isEmpty(tem)){

total.add(tem);

}

return total;

}

/**

* 将list切割

*

* @param chunkList 被分隔的数组

* @param chunkNum 每段的大小

* @param List中的类型

* @return

*/

public static List> listChunk(List chunkList, int chunkNum) {

if (chunkList == null || chunkNum <= 0) {

List> t = new ArrayList<>();

t.add(chunkList);

return t;

}

Iterator iterator = chunkList.iterator();

int i = 1;

List> total = new ArrayList<>();

List tem = new ArrayList<>();

while (iterator.hasNext()) {

T next = iterator.next();

tem.add(next);

if (i == chunkNum) {

total.add(tem);

tem = new ArrayList<>();

i = 0;

}

i++;

}

if(!CollectionUtils.isEmpty(tem)){

total.add(tem);

}

return total;

}

}

补充:java中List集合存放Map

list集合存放Map示例:

List> listMap = new ArrayList<>();

Map map = new HashMap();

List list = new ArrayList<>();

map.put("list",list);

listMap.add(map);

以上为个人经验,希望能给大家一个参考,也希望大家多多支持得牛网。如有错误或未考虑完全的地方,望不吝赐教。

arraylist切割_JAVA List和Map切割工具详解相关推荐

  1. java 三种将list转换为map的方法详解

    这篇文章主要介绍了java 三种将list转换为map的方法详解的相关资料,需要的朋友可以参考下 java 三种将list转换为map的方法详解 在本文中,介绍三种将list转换为map的方法: 1) ...

  2. (7)Java数据结构--集合map,set,list详解

    MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...

  3. JDK自带JVM分析工具详解

    JDK自带JVM分析工具详解 1. JVM分析工具概述 1.1 JVM分析工具简介 1.2 JVM分析工具分类 2. JVM分析工具详解 2.1 idea环境配置 2.2 jps 2.3 jinfo ...

  4. rpm包安装和卸载,rpm查询,yum工具详解,yum仓库搭建

    rpm包安装和卸载 [root@binbinlinux Packages]# rpm -ivh zip-3.0-1.el6.x86_64.rpm    安装rpm包命令   ivh I=安装的意思in ...

  5. js数组中foEach和map的用法详解 jq中的$.each和$.map

    数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...

  6. Java中Map的entrySet()详解 || Map.Entry的详解

    Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value Map.Entry的详解

  7. centos rpm 安装 perl_XtraBackup工具详解 Part 2 xtrabackup安装

    实验环境 此次实验的环境如下 MySQL 5.7.25 Redhat 6.10 1. xtrabackup版本 我们在官方网站可以看到xtrabackup有多个版本 https://www.perco ...

  8. Chrome开发者工具详解(4)-Profiles面板

    Chrome开发者工具详解(4)-Profiles面板 如果上篇中的Timeline面板所提供的信息不能满足你的要求,你可以使用Profiles面板,利用这个面板你可以追踪网页程序的内存泄漏问题,进一 ...

  9. parted工具详解

    通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大:而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘.但是现在的磁盘空间很多都已经是 ...

最新文章

  1. Ubuntu 15.10安装ns2.35+nam
  2. android notification点击无效,Notification.addAction在Android O中无效
  3. Go语言介绍 安装 基础命令(一)
  4. 【练习】c++删除链表倒数第K个结点和 插入排序算法将单链表递增排序
  5. truffle serve 发生异常解决办法
  6. mariadb mysql 重建_(MariaDB/MySQL)之DML(2):数据更新、删除
  7. 屏幕释放第八章 Libgdx输入处理(3)输入设备
  8. Java核心技术笔记 1
  9. 上帝手中的骰子——无所不能的贝叶斯(上篇)
  10. 在Eclipse中配置DOS(cmd)窗口
  11. 数据结构(java语言描述)课后答案_数据结构JAVA语言描述习题答案(刘小晶等主编)pdf总复习.ppt...
  12. 作业必备:【操作系统实验报告】实验一:熟悉Ubuntu环境(后续会更新~)
  13. DOS批处理高级教程(还不错)
  14. 一个JSP页面打开另外一个JSP页面并传值
  15. SpringBoot如何整合BBoss Elasticsearch呢
  16. Javaweb——监听器
  17. Scrum入门基础系列之Scrum起源
  18. 错失英语,还是想错失另一个世界?
  19. 电脑用java怎么编程,使用java编程从0到1实现一个简单计算器
  20. python画图之哆啦a梦

热门文章

  1. Java虚拟机最多支持多少个线程的探讨
  2. 如何看待消息中间件的选型
  3. java如何实现连接wifi_java-是否可以检测到您要连接的WiFi类型?
  4. MVC--Rzaor--例子
  5. python 调用c++ boost
  6. oneshot单样本学习笔记
  7. RGBD 转换成点云 open3d
  8. YOLOv5训练量化压缩
  9. MultiResUNet笔记
  10. namespace nvinfer1