吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2440|回复: 5
收起左侧

[Java 转载] 分割map和分割list的通用方法

[复制链接]
三木猿 发表于 2020-9-7 10:59
[Java] 纯文本查看 复制代码
    /**
     * 描述:分割Map
     * [url=home.php?mod=space&uid=952169]@Param[/url] map 原始数据
     * @param pageSize 每个map数量
     * [url=home.php?mod=space&uid=155549]@Return[/url] 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;
    }

[Java] 纯文本查看 复制代码
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;
    }

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 三木猿 发表于 2020-9-7 11:03
分割出来的样子,list有91条数据且num=3,则分割出来3个list,前两个list有30条数据,最后一个有31条
剑龙传说 发表于 2020-9-7 11:31
楼主不错,虽然我觉得很厉害,但是我相信我能做出来
1281407155 发表于 2020-9-7 12:58
com.google.common.collect.Lists  参考下,谷歌的轮子已经实现了
 楼主| 三木猿 发表于 2020-9-7 13:04
1281407155 发表于 2020-9-7 12:58
com.google.common.collect.Lists  参考下,谷歌的轮子已经实现了

感谢告知,我去试试
 楼主| 三木猿 发表于 2020-9-7 13:22
1281407155 发表于 2020-9-7 12:58
com.google.common.collect.Lists  参考下,谷歌的轮子已经实现了

我看了下,谷歌那个这个是不一样的,谷歌的partition方法是指定一个list有多少数据,我这个是拆分为几个list,应用场景不一样的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 01:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表