工具类方法
package org. common. util ;
import java. util. ArrayList ;
import java. util. Iterator ;
import java. util. List ;
public class BatchIterator < T > implements Iterator < List < T > > { private final List < T > list; private final int batchSize; private int currentIndex; public BatchIterator ( List < T > list, int batchSize) { this . list = list; this . batchSize = batchSize; this . currentIndex = 0 ; } @Override public boolean hasNext ( ) { return currentIndex < list. size ( ) ; } @Override public List < T > next ( ) { int endIndex = Math . min ( currentIndex + batchSize, list. size ( ) ) ; List < T > batch = new ArrayList < > ( list. subList ( currentIndex, endIndex) ) ; currentIndex = endIndex; return batch; }
}
测试方法
package org. common. util ; import org. common. util. BatchIterator ; import java. util. ArrayList ;
import java. util. List ; public class BatchIteratorTest { public static List < Integer > setListData ( ) { List < Integer > tmpList = new ArrayList < > ( ) ; for ( int i = 0 ; i < 100 ; i++ ) { tmpList. add ( i) ; } return tmpList; } public static void main ( String [ ] args) { BatchIterator < Integer > batchIterator = new BatchIterator < > ( setListData ( ) , 20 ) ; while ( batchIterator. hasNext ( ) ) { List < Integer > tempList = batchIterator. next ( ) ; System . out. println ( tempList) ; } }
}
测试结果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39]
[40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59]
[60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79]
[80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]