mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
fix code
This commit is contained in:
parent
22366f38f1
commit
ab79193c7e
@ -1,5 +1,7 @@
|
||||
package cn.hutool.core.collection;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
|
||||
import java.util.AbstractList;
|
||||
import java.util.List;
|
||||
|
||||
@ -21,19 +23,18 @@ public class Partition<T> extends AbstractList<List<T>> {
|
||||
/**
|
||||
* 列表分区
|
||||
*
|
||||
* @param list 被分区的列表
|
||||
* @param size 每个分区的长度
|
||||
* @param list 被分区的列表,非空
|
||||
* @param size 每个分区的长度,必须>0
|
||||
*/
|
||||
public Partition(List<T> list, int size) {
|
||||
this.list = list;
|
||||
this.size = size;
|
||||
this.list = Assert.notNull(list);
|
||||
this.size = Math.min(list.size(), size);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<T> get(int index) {
|
||||
int listSize = list.size();
|
||||
int start = Math.min(index * size, listSize);
|
||||
int end = Math.min(start + size, listSize);
|
||||
final int start = index * size;
|
||||
final int end = Math.min(start + size, list.size());
|
||||
return list.subList(start, end);
|
||||
}
|
||||
|
||||
@ -42,8 +43,9 @@ public class Partition<T> extends AbstractList<List<T>> {
|
||||
// 此处采用动态计算,以应对list变
|
||||
final int size = this.size;
|
||||
final int total = list.size();
|
||||
int length = (total + size - 1) / size;
|
||||
return length;
|
||||
// 类似于判断余数,当总数非整份size时,多余的数>=1,则相当于被除数多一个size,做到+1目的
|
||||
// 类似于:if(total % size > 0){length += 1;}
|
||||
return (total + size - 1) / size;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -73,12 +73,16 @@ public class ListUtilTest {
|
||||
lists = ListUtil.splitAvg(Arrays.asList(1, 2, 3, 4), 4);
|
||||
Assert.assertEquals("[[1], [2], [3], [4]]", lists.toString());
|
||||
|
||||
lists = ListUtil.splitAvg(Arrays.asList(1, 2, 3), 5);
|
||||
Assert.assertEquals("[[1], [2], [3], [], []]", lists.toString());
|
||||
lists = ListUtil.splitAvg(Arrays.asList(1, 2, 3), 2);
|
||||
Assert.assertEquals("[[1, 2], [3]]", lists.toString());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void splitAvgTest2() {
|
||||
List<List<Object>> lists = ListUtil.splitAvg(Arrays.asList(1, 2, 3), 5);
|
||||
Assert.assertEquals("[[1], [2], [3], [], []]", lists.toString());
|
||||
}
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
public void splitAvgNotZero() {
|
||||
// limit不能小于等于0
|
||||
|
Loading…
x
Reference in New Issue
Block a user