我有这个拆分方法,我有一个循环。此循环运行4次,但应运行5次。任何想法为什么它的行为如此?Java循环奇怪的行为
public static <T> List<List<T>> split(List<T> bigCollection, int maxBatchSize) {
List<List<T>> result = new ArrayList<List<T>>();
if (CollectionUtils.isEmpty(bigCollection)) {
// return empty list
} else if (bigCollection.size() < maxBatchSize) {
result.add(bigCollection);
} else {
for (int i = 0; (i + maxBatchSize) <= bigCollection.size(); i = i + maxBatchSize) {
result.add(bigCollection.subList(i, i + maxBatchSize));
}
if (bigCollection.size() % maxBatchSize > 0) {
result.add(bigCollection.subList((int) (bigCollection.size()/maxBatchSize) * maxBatchSize,
bigCollection.size()));
}
}
return result;
}
public static void main(String[] args) {
List<String> coll = new ArrayList<String>();
coll.add("1");
coll.add("2");
coll.add("3");
coll.add("4");
coll.add("5");
coll.add("6");
coll.add("7");
coll.add("8");
System.out.println(split(coll, 2));
}
输出 - [[1,2],[3,4],[5,6],[7,8]]
根据我此代码应当循环运行第五破时间,它会尝试执行子列表功能。
伙计,只有4步(根据你的5)!你为什么不在调试器中运行它? – dotvav
你的语句'(i + maxBatchSize)<= bigCollection.size()'检查我是否为2,4,6,8,并在第五次运行中再次运行10次,然后停止。怎么了 ? – MrT
如果您无法轻松查看循环代码并查看它运行多少次,则意味着代码太复杂,请尝试使用良好的名称创建一些中间变量,以便更容易理解。 – codebox