分割map和分割list的通用方法
/*** 描述:分割Map
* @Param map 原始数据
* @param pageSize 每个map数量
* @Return ListList<Map<K, V>>
*
*/
public static <K, V> List<Map<K, V>> splitMap(Map<K, V> map, int pageSize) {
if (map == null || map.isEmpty()) {
return Collections.emptyList();
}
pageSize = pageSize == 0 ? 10000 : pageSize;
List<Map<K, V>> newList = new ArrayList<>();
int j = 0;
for (K k : map.keySet()) {
if (j % pageSize == 0) {
newList.add(new HashMap<>());
}
newList.get(newList.size() - 1).put(k, map.get(k));
j++;
}
return newList;
}
public static <T> Map<Integer, List<T>> splitList(List<T> t, int num) {
Map<Integer, List<T>> subList = new HashMap<>(num);
int num1 = (int) Math.floor(t.size() / num);
for (int i = 0; i < num; i++) {
subList.put(i, t.subList(i * num1, (i + 1) * num1));
if (i == num - 1) {
subList.put(i, t.subList(i * num1, t.size()));
}
}
return subList;
} 分割出来的样子,list有91条数据且num=3,则分割出来3个list,前两个list有30条数据,最后一个有31条 楼主不错,虽然我觉得很厉害,但是我相信我能做出来 com.google.common.collect.Lists参考下,谷歌的轮子已经实现了 1281407155 发表于 2020-9-7 12:58
com.google.common.collect.Lists参考下,谷歌的轮子已经实现了
感谢告知,我去试试 1281407155 发表于 2020-9-7 12:58
com.google.common.collect.Lists参考下,谷歌的轮子已经实现了
我看了下,谷歌那个这个是不一样的,谷歌的partition方法是指定一个list有多少数据,我这个是拆分为几个list,应用场景不一样的
页:
[1]