Java 中 List 和 Map 的切割工具
程序员文章站
2022-04-22 13:47:49
...
在项目开发中会遇到对结果集List or Map要做业务切割。
如下两个工具分别对 List 和 Map 按照指定大小进行切割:
/**
* 将map切成段 *
* @param chunkMap 被切段的 map
* @param chunkNum 每段的大小
* @param <k> map 的 key类 型
* @param <v> map 的value 类型
* @return List
*/
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 chunkNum 每段的大小
* @param list
* @return map 每一 Kye 中有 chunkNum 条数据
*/
public static LinkedHashMap groupList(List list, int chunkNum) {
int listSize = list.size();
int toIndex = chunkNum;
LinkedHashMap map = new LinkedHashMap();
int keyToken = 0;
for (int i = 0; i < listSize; i += chunkNum) {
if (i + chunkNum > listSize) {
toIndex = listSize - i;
}
List newList = list.subList(i, i + toIndex);
map.put("keyName" + (keyToken + 1), newList);
keyToken++;
}
return map;
}
上一篇: 米线和牙缝
下一篇: 来自丹麦的超豪华万能遥控器
推荐阅读
-
Java8利用stream的distinct()方法对list集合中的对象去重和抽取属性去重
-
在JSTL EL中处理java.util.Map,及嵌套List的情况
-
Java8利用stream的distinct()方法对list集合中的对象去重和抽取属性去重
-
java中List对象的操作方法和List对象的遍历
-
Java中res.add(list)和res.add(new ArrayList<Integer>(list))的区别
-
Java中stream处理中map与flatMap的比较和使用案例
-
由Java中的Set,List,Map引出的排序技巧
-
Java中关于map地图计算的工具类
-
Java中list里面存放map,根据map中的某一个字段进行排序
-
JAVA List和Map切割工具详解