JAVA List和Map切割工具详解

作者:qq_38524629 时间:2023-01-27 11:32:42 

使用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 <k>   map的key类型
  * @param <v>   map的value类型 如果是自定义类型,则必须实现equals和hashCode方法
  * @return
  */
 public static <k, v> List<Map<k, v>> mapChunk(Map<k, v> chunkMap, int chunkNum) {
   if (chunkMap == null || chunkNum <= 0) {
     List<Map<k, v>> list = new ArrayList<>();
     list.add(chunkMap);
     return list;
   }
   Set<k> keySet = chunkMap.keySet();
   Iterator<k> iterator = keySet.iterator();
   int i = 1;
   List<Map<k, v>> total = new ArrayList<>();
   Map<k, v> 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 <T>    List中的类型
  * @return
  */
 public static <T> List<List<T>> listChunk(List<T> chunkList, int chunkNum) {
   if (chunkList == null || chunkNum <= 0) {
     List<List<T>> t = new ArrayList<>();
     t.add(chunkList);
     return t;
   }
   Iterator<T> iterator = chunkList.iterator();
   int i = 1;
   List<List<T>> total = new ArrayList<>();
   List<T> 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<Map<String,Object>> listMap = new ArrayList<>();
Map<String,Object> map = new HashMap<String,Object>();
List<Entity> list = new ArrayList<>();
map.put("list",list);
listMap.add(map);

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

来源:https://blog.csdn.net/qq_38524629/article/details/90139569

标签:JAVA,List,Map
0
投稿

猜你喜欢

  • Java中的静态绑定和动态绑定详细介绍

    2023-01-18 19:54:06
  • JPype实现在python中调用JAVA的实例

    2022-08-24 03:19:52
  • unity通过Mesh网格绘制图形球体

    2023-12-12 08:08:21
  • 解析.NET中几种Timer的使用

    2023-05-21 17:27:53
  • java基础的详细了解第八天

    2023-11-08 10:47:47
  • Java中ClassLoader类加载学习总结

    2022-08-26 18:13:42
  • Java项目实现寻找迷宫出路

    2022-10-05 14:08:46
  • C#实现基于IE内核的简单浏览器完整实例

    2021-12-04 02:08:02
  • Java中synchronized的优化措施

    2022-10-09 18:19:05
  • Android Studio 多层级 Module 对 aar 引用问题解决方法

    2023-08-06 19:41:27
  • SpringBoot搭建go-cqhttp机器人的方法实现

    2022-11-17 23:58:40
  • C#多线程异步执行和跨线程访问控件Helper

    2022-02-09 12:24:32
  • eclipse+maven+spring mvc项目基本搭建过程

    2022-12-18 03:50:52
  • Android日期时间格式国际化的实现代码

    2023-08-28 04:44:42
  • Java操作文件输出为字符串以及字符串输出为文件的方法

    2022-02-01 19:32:45
  • Java 替换word文档文字并指定位置插入图片

    2023-08-12 22:02:25
  • Java中Request请求转发详解

    2021-05-25 20:53:42
  • 详解Android应用中ListView列表选项栏的编写方法

    2023-09-03 15:01:25
  • Android onClick方法与setOnClickListener方法对比

    2022-02-09 22:21:40
  • Java实现的对称加密算法AES定义与用法详解

    2021-10-16 22:16:05
  • asp之家 软件编程 m.aspxhome.com