arraylist切割_JAVA List和Map切割工具详解
使用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切割工具详解相关推荐
- java 三种将list转换为map的方法详解
这篇文章主要介绍了java 三种将list转换为map的方法详解的相关资料,需要的朋友可以参考下 java 三种将list转换为map的方法详解 在本文中,介绍三种将list转换为map的方法: 1) ...
- (7)Java数据结构--集合map,set,list详解
MAP,SET,LIST,等JAVA中集合解析(了解) - clam_clam的专栏 - CSDN博---有颜色, http://blog.csdn.net/clam_clam/article/det ...
- JDK自带JVM分析工具详解
JDK自带JVM分析工具详解 1. JVM分析工具概述 1.1 JVM分析工具简介 1.2 JVM分析工具分类 2. JVM分析工具详解 2.1 idea环境配置 2.2 jps 2.3 jinfo ...
- rpm包安装和卸载,rpm查询,yum工具详解,yum仓库搭建
rpm包安装和卸载 [root@binbinlinux Packages]# rpm -ivh zip-3.0-1.el6.x86_64.rpm 安装rpm包命令 ivh I=安装的意思in ...
- js数组中foEach和map的用法详解 jq中的$.each和$.map
数组中foEach和map的用法详解 相同点: 1.都是循环遍历数组(仅仅是数组)中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项value, ...
- Java中Map的entrySet()详解 || Map.Entry的详解
Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value Map.Entry的详解
- centos rpm 安装 perl_XtraBackup工具详解 Part 2 xtrabackup安装
实验环境 此次实验的环境如下 MySQL 5.7.25 Redhat 6.10 1. xtrabackup版本 我们在官方网站可以看到xtrabackup有多个版本 https://www.perco ...
- Chrome开发者工具详解(4)-Profiles面板
Chrome开发者工具详解(4)-Profiles面板 如果上篇中的Timeline面板所提供的信息不能满足你的要求,你可以使用Profiles面板,利用这个面板你可以追踪网页程序的内存泄漏问题,进一 ...
- parted工具详解
通常我们用的比较多的一般都是fdisk工具来进行分区,但是现在由于磁盘越来越廉价,而且磁盘空间越来越大:而fdisk工具他对分区是有大小限制的,它只能划分小于2T的磁盘.但是现在的磁盘空间很多都已经是 ...
最新文章
- Ubuntu 15.10安装ns2.35+nam
- android notification点击无效,Notification.addAction在Android O中无效
- Go语言介绍 安装 基础命令(一)
- 【练习】c++删除链表倒数第K个结点和 插入排序算法将单链表递增排序
- truffle serve 发生异常解决办法
- mariadb mysql 重建_(MariaDB/MySQL)之DML(2):数据更新、删除
- 屏幕释放第八章 Libgdx输入处理(3)输入设备
- Java核心技术笔记 1
- 上帝手中的骰子——无所不能的贝叶斯(上篇)
- 在Eclipse中配置DOS(cmd)窗口
- 数据结构(java语言描述)课后答案_数据结构JAVA语言描述习题答案(刘小晶等主编)pdf总复习.ppt...
- 作业必备:【操作系统实验报告】实验一:熟悉Ubuntu环境(后续会更新~)
- DOS批处理高级教程(还不错)
- 一个JSP页面打开另外一个JSP页面并传值
- SpringBoot如何整合BBoss Elasticsearch呢
- Javaweb——监听器
- Scrum入门基础系列之Scrum起源
- 错失英语,还是想错失另一个世界?
- 电脑用java怎么编程,使用java编程从0到1实现一个简单计算器
- python画图之哆啦a梦