我有一個隨機大小大於20k的列表。我怎樣才能將它們分成子列表,其中每個子列表將具有相同的長度或等於+1(奇數列表?)?有沒有簡單的方法將ONE列表拆分爲X個子列表?
由於它是隨機大小,實現應該沒有任何定義的大小正確嗎?
我目前正在研究這個模板:
public static <T> List<List<T>> split(List<T> list, int size) throws NullPointerException, IllegalArgumentException {
if (list == null) {
throw new NullPointerException("The list parameter is null.");
}
if (size <= 0) {
throw new IllegalArgumentException("The size parameter must be more than 0.");
}
int num = list.size()/size;
int mod = list.size() % size;
List<List<T>> ret = new ArrayList<List<T>>(mod > 0 ? num + 1 : num);
for (int i = 0; i < num; i++) {
ret.add(list.subList(i * size, (i + 1) * size));
}
if (mod > 0) {
ret.add(list.subList(num * size, list.size()));
}
return ret;
}
這一個是創建子列表基於已知子表的大小,然後創建X子列表。
我需要的結果是傳遞一個LIST和一個目標sublistSize。所以我通過一個大小爲26346的記錄和子列表大小爲5的列表。最終我會得到5個子列表。前四個子列表將包含5269條記錄,最後一個(第五個)子列表將包含5270條記錄。
你想要一定數量的子列表或每個子列表有一定的長度嗎? – kuporific
此刻我最多需要5個列表,然後在每個列表中都有大約相同的數字記錄。 – iCodeLikeImDrunk
你提到子列表將有一個長度「length」,有些將有一個長度「length + 1」。這些超長列表是否應該是第一個子列表,最後一個子列表,其他子列表以及其他一些安排? – kuporific