资讯专栏INFORMATION COLUMN

【Java】实现list等分

yy736044583 / 2808人阅读

摘要:事件起因博主在学习爬虫的时候,需要将一个等分成个。实现代码直接附上自己写的代码轻喷平分成份数据量尽可能相等需要平分的平分成分商数余数偏移量循环长度起始下标结束下标代码用例代码用例如下原始数据分成等份按等份分组后输出的结果如下

事件起因

  博主在学习 Python 爬虫的时候,需要将一个 list 等分成 n 个 list 。
  由于能力有限,自己也没有更好的实现方式,所以就现成的拿了别人的代码直接用。

def splist(l, s):
  return [l[i:i+s] for i in range(len(l)) if i%s==0]

  然而很不巧的的是,项目过程中又碰到了这个问题,而且这次用的是 Java !!!
  虽然说处理的过程是有类似的地方,但真动手写起来还是比较棘手的。毕竟 Java 没有像 Python 这些丰富的库函数。
  网上我也找过一些类似的方法,但都不是很满意,所以还是自己花时间折腾来造造轮子。

实现代码

  直接附上自己写的代码(轻喷):

  /**
     * 平分list成n份 数据量尽可能相等
     * @param list 需要平分的list
     * @param n    平分成n分
     * @return
     */
    public static  List> splitList(List list, int n) {
        List> strList = new ArrayList<>();
        if (list == null) return strList;
        int size = list.size();
        int quotient = size / n; // 商数
        int remainder = size % n; // 余数
        int offset = 0; // 偏移量
        int len = quotient > 0 ? n : remainder; // 循环长度
        int start = 0;    // 起始下标
        int end = 0;    // 结束下标
        List tempList = null;
        for (int i = 0; i < len; i++) {
            if (remainder != 0) {
                remainder--;
                offset = 1;
            } else {
                offset = 0;
            }
            end = start + quotient + offset;
            tempList = list.subList(start, end);
            start = end;
            strList.add(tempList);
        }
        return strList;
    }
代码用例

  代码用例如下:

public static void main(String[] args) {
        List integerList = new ArrayList<>();
        // 原始数据:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
        for (int i = 0; i < 14; i++) {
            integerList.add(i);
        }
        List> splitList = splitList(integerList, 10);    // 分成10等份
        System.out.println(splitList);
    }

  按10等份分组后输出的结果如下:

[[0, 1], [2, 3], [4, 5], [6, 7], [8], [9], [10], [11], [12], [13]]

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/67833.html

相关文章

  • 基于K-means 切割多边形 JAVA实现

    摘要:基于切割多边形实现思路初稿详见多边形等分依赖实现实现过程结果类泰森多边形平分多边形结果原始平面随机点集合分组后组中心集合构造泰森多边形聚合类聚合聚合总量数据集合簇族数量中 基于K-means 切割多边形 JAVA实现 思路初稿详见多边形等分 依赖 geotools ekmeans org.locationtech.jts jts-co...

    haobowd 评论0 收藏0
  • vue实现旋转木马轮播

    摘要:关于旋转木马效果实用例子一个实际应用在优酷的频道页。将对的数据操作转化为数组,数组元素存储各项的数据宽高绝对定位偏移值透明度以及层叠参数,在模板处遍历实际项目的数组,其样式则通过索引获取对数组的元素数据。 同事拿到个设计稿,是旋转木马的轮播效果,于是网上找了一下,发现了jquery实现的效果,一有空就看看源码,研究其实现原理,想着用vue的数据驱动方式来实现一个,但这个效果跟以往做的d...

    waltr 评论0 收藏0
  • vue实现旋转木马轮播

    摘要:关于旋转木马效果实用例子一个实际应用在优酷的频道页。将对的数据操作转化为数组,数组元素存储各项的数据宽高绝对定位偏移值透明度以及层叠参数,在模板处遍历实际项目的数组,其样式则通过索引获取对数组的元素数据。 同事拿到个设计稿,是旋转木马的轮播效果,于是网上找了一下,发现了jquery实现的效果,一有空就看看源码,研究其实现原理,想着用vue的数据驱动方式来实现一个,但这个效果跟以往做的d...

    高璐 评论0 收藏0
  • 地图标记聚合算法

    摘要:需要实现一个地图图标聚合算法最终功能类似安居客在地图搜索房源的功能当地图缩放级别较大时仅用一个地图标记显示该区域总数当地图缩小至一定级别时每条信息才可以显示为单独的图标自己拟了一套算法基本思想是以网格递归分割全部数据点直到网格大小达到阈值或 需要实现一个地图图标聚合算法, 最终功能类似 安居客 在地图搜索房源的功能. 当地图缩放级别较大时, 仅用一个地图标记显示该区域总数; 当地图缩小...

    妤锋シ 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<