This commit is contained in:
Looly
2021-09-09 16:14:37 +08:00
parent 5be6c0103b
commit 02885bbcd3
17 changed files with 303 additions and 69 deletions

View File

@@ -40,6 +40,8 @@ public class AvgPartition<T> extends Partition<T> {
@Override
public List<T> get(int index) {
final int size = this.size;
final int remainder = this.remainder;
// 当limit个数超过list的size时size为0此时每个分区分1个元素直到remainder个分配完剩余分区为[]
int start = index * size + Math.min(index, remainder);
int end = start + size;

View File

@@ -38,10 +38,11 @@ public class Partition<T> extends AbstractList<List<T>> {
@Override
public int size() {
// 此处采用动态计算以应对list变
// 此处采用动态计算以应对list变
final int size = this.size;
final int total = list.size();
int length = total / size;
if(total % length > 0){
if(total % size > 0){
length += 1;
}
return length;

View File

@@ -18,11 +18,19 @@ public class ListUtilTest {
@Test
public void splitTest(){
List<String> listAll = new ArrayList<>();
listAll.add("1");
listAll.add("2");
List<List<String>> lists = ListUtil.split(listAll, 10);
Assert.assertEquals(1, lists.size());
List<List<Object>> lists = ListUtil.split(null, 3);
Assert.assertEquals(ListUtil.empty(), lists);
lists = ListUtil.split(Arrays.asList(1, 2, 3, 4), 1);
Assert.assertEquals("[[1], [2], [3], [4]]", lists.toString());
lists = ListUtil.split(Arrays.asList(1, 2, 3, 4), 2);
Assert.assertEquals("[[1, 2], [3, 4]]", lists.toString());
lists = ListUtil.split(Arrays.asList(1, 2, 3, 4), 3);
Assert.assertEquals("[[1, 2, 3], [4]]", lists.toString());
lists = ListUtil.split(Arrays.asList(1, 2, 3, 4), 4);
Assert.assertEquals("[[1, 2, 3, 4]]", lists.toString());
lists = ListUtil.split(Arrays.asList(1, 2, 3, 4), 5);
Assert.assertEquals("[[1, 2, 3, 4]]", lists.toString());
}
@Test