我有一个随机大小大于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