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