Java将一个list等分成n个list方法
来源:互联网 发布:淘宝卖保健品填厂家 编辑:程序博客网 时间:2024/06/06 05:21
之前博主在学习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 <T> List<List<T>> splitList(List<T> list, int n) { List<List<T>> 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<T> 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<Integer> 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<List<Integer>> splitList = splitList(integerList, 10); // 分成10等份 System.out.println(splitList); }
按10等份分组后输出的数据如下:
[[0, 1], [2, 3], [4, 5], [6, 7], [8], [9], [10], [11], [12], [13]]
代码只是经过我几组简单数据的测试,可能还存在问题,评论区可做探讨,欢迎各路大神指点一二,不胜感激。
阅读全文
1 0
- Java将一个list等分成n个list方法
- JAVA中将一个List等分成n个list的工具方法
- JAVA中将一个List等分成n个list的工具方法
- JAVA中将一个List等分成n个list的工具方法
- 将一个list分成多个list的Java实现。
- java 把一个大list分成N个小list,然后用map存储的小方法
- 将一个集合list等分成几个集合
- java 将list按照指定数量分成小list
- java中,删除一个List中的后n个元素
- 分隔List集合,按指定大小,将集合分成多个
- 将正整数n划分成k个不同正整数的乘积,输出所有划分方法
- java将一个List赋值给另一个List相关问题
- java将一个List赋值给另一个List相关问题
- java将一个List赋值给另一个List相关问题
- java将一个List赋值给另一个List相关问题
- Java 得到n个小于n的随机数list
- 从list中取N个随机生成一个集合
- n个平面最多将空间划分成几部分
- Unity3D中上斜坡会下滑的问题
- POJ
- 所爱图书
- STL_vector (不定长数组)
- ThreadPoolExecutor 扩展
- Java将一个list等分成n个list方法
- #COCI#玻璃杯(状压DP)
- jdbc连接oracle数据库
- Merge Sorted Array
- jQuery 修改CSS样式 与 attr方法-获得修改元素属性值
- 抽象方法的访问修饰符
- C++ 模板函数和普通函数匹配规则
- c# 四舍五入、上取整、下取整
- BZOJ 3450 Easy