我有這個拆分方法,我有一個循環。此循環運行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