java中List按指定大小分割
之前写过的代码,几个月后遇到类似的功能,感觉很熟悉,稍微费些劲也能做到,但是觉得有些不甘。明明之前整理好的为什么要重新做?百度参考其他人的思路感觉不是很顺心,个人原因吧。于是翻箱倒柜找出以前的代码,贴在这里留作笔记,或许也有其他同行有相似需求,聊做参考。
/**
* 数组切分
*
*/
public class PartitionList { /**
* 方式一
* 非均分,最后一组数量可能小于其它组数量
* @param list
* @param unitSize
* @return
*/
public static <T> List<List<T>> splitList_1(List<T> list, int unitSize) {
if (list == null || list.isEmpty() || unitSize < 1)
return null; int wholeSize = list.size();
int groupNum = wholeSize / unitSize;
List<List<T>> result = new ArrayList<List<T>>(); for (int i = 0; i < groupNum; i++) {
List<T> subList = list.subList(i * unitSize, (i + 1) * unitSize);
result.add(subList);
} if(unitSize * groupNum < wholeSize){
List<T> restList = list.subList(unitSize * groupNum, wholeSize);
result.add(restList);
} return result;
} /**
* 方式二
* 非均分,最后一组数量可能小于其它组数量
* @param list
* @param unitSize
* @return
*/
public static <T> List<List<T>> splitList_2(List<T> list, int unitSize) {
if (list == null || list.isEmpty() || unitSize < 1)
return null; int wholeSize = list.size();
List<List<T>> result = new ArrayList<List<T>>(); int start = 0;
int end = 0;
while(start < wholeSize){
end = start + unitSize;
if(end > wholeSize){
end = wholeSize;
}
List<T> subList = list.subList(start, end);
result.add(subList);
start = start + unitSize;
}
return result;
}
}
当然,这里面也是有参考其他大拿思路的地方,自己稍作了些改动。
百度过程中发现有人提到guava,appache ListUtil,java8新特性均可切分List,在这里Mark一下。
java中List按指定大小分割的更多相关文章
- JAVA将byte数组(byte[])按照指定大小分割成多个byte数组
/** * 将byte数组按照指定大小分割成多个数组 * @param bytes 要分割的byte数组 * @param subSize 分割的块大小 单位:字节 * @return 指定大小的by ...
- Java中计算对象的大小
一.计算对象大小的方法 Java中如何计算对象的大小呢,找到了4种方法: 1.java.lang.instrument.Instrumentation的getObjectSize方法: 2.BTrac ...
- Java中,数值比较大小,以及数值判断相等
Java中,数值比较大小,以及数值判断相等
- Java中字符串相等与大小比较
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送) 国 ...
- Java中字符串相等与大小比較
在C++中,两个字符串比較的代码能够为: (string1==string2) 但在java中,这个代码即使在两个字符串全然同样的情况下也会返回false Java中必须使用string1.equal ...
- java将list分为指定大小的新集合
上代码: import java.util.ArrayList; import java.util.List; public class JayCommonUtil { /** * 按指定大小,分隔集 ...
- java中删除list指定元素遇到的问题
java删除list中指定的元素可以用remove()函数,但会存在一个问题,举个例子来说 假如有a,b,c,d,e这个list,用remove()方法删除第一个元素之后,b,c,d,e会往前移动,此 ...
- 【java】初始化一个指定大小的list,在指定位置set存入元素,下标越界
List使用过程中,出现这样的问题,出现异常:java.lang.IndexOutOfBoundsException: Index: 1, Size: 0 List<String> lis ...
- java中import机制(指定import和import *的区别)
转自:https://www.cnblogs.com/dtts/p/4692480.html java中有两种包的导入机制,总结如下: 单类型导入(single-type-import), ...
随机推荐
- NetSec2019 20165327 Exp1 PC平台逆向破解
NetSec2019 20165327 Exp1 PC平台逆向破解 一.实践目标 本次实践的对象是一个名为pwn1(实验中用的 是5327pwnx)的linux可执行文件. 该程序正常执行流程是:ma ...
- HDOJ-2011
#include<iostream> #include<cstdio> using namespace std; int main(){ int m,n,i; float su ...
- DS博客作业03——栈和队列
1.本周学习总结 谈谈你对栈和队列结构的认识及学习体会. 栈和队列的本质就是线性表.所以,相应的栈跟队列都有两种存储结构:顺序存储结构.链式存储结构. 栈的特点是后进先出,根据栈时进时出的规则,出栈的 ...
- 记一次tomcat运行起来了但是项目没起来的问题
解决办法是: 先是tomcat的conf文件夹下的servel.xml中这两个值改成false. 然后重新运行maven的package打包,再运行项目就行了.
- win7系统内网共享打印机设置
工作中通常使用内网,你同事的计算机连接了一台打印机,老板没给你单独配打印机,莫慌,你可以通过内网连接同事的打印机. 1.在你同事的电脑上启用来宾账户并按照链接设置:https://jingyan.ba ...
- js删除数组中元素 delete 和splice的区别
例如我有一个数组: var array = ["aa","dd","cc","aa"] ,我想删除这个数组的“dd”元素 ...
- argument 1 must be 2-item sequence, not int
看了 https://blog.csdn.net/qq_18250439/article/details/80872425 的说明,才明白为什么错了. 当使用Python3-pygame时出现Typ ...
- python2.x 与 python3.x的不同
python2.x 与 python3.x 的区别: 1. python2.x 的源码编码不规范,源码重复较多:python3.x 的源码编码规范,清晰.优美.简单 2. python2.x的默认字符 ...
- 小白的python之路10/31&11/1文件操作系统
文件操作系统的介绍 ext4的superblock块是超级快,innode 块是专门存放文件信息的, block count将硬盘做成block块,对操作系统而言写在block块上就可了,eg:文件1 ...
- 解决Sublime的package control被墙
主要是https://packagecontrol.io 这个被墙了 下载不下来导致的错误,把下载链接改为国内的. 操作步骤: 打开: Preferences > Package Setting ...