Равномерно распределяйте списки на подсписки в JavaJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Равномерно распределяйте списки на подсписки в Java

Сообщение Anonymous »

Я хочу равномерно распределить список на заданное количество подсписков.
Например, у меня есть список с элементами от 1 до 10, и мне нужно 3 списка. Они должны выглядеть так:

Код: Выделить всё

SL1 -> {1, 2, 3, 4}
SL2 -> {5, 6, 7}
SL3 -> {8, 9, 10}
Важно. Содержание каждого списка не имеет значения, т. е. SL1 может иметь {1, 5, 7, 10}. Самое главное, что есть 2 списка размером 3 и 1 список размером 4.

Я пробовал несколько вещей, включая Iterables.partition но это не поможет.

Единственное, что я придумал, это работает:

Код: Выделить всё

public Iterable distributeEvenlyQueryListIntoLists(final LinkedList bigList, final Integer numberOfSublists) {
List result = new ArrayList();

// Creates as many lists as needed
for (int i = 0; i < numberOfSublists; i++) {
result.add(new ArrayList());
}

while (bigList.iterator().hasNext()) {
for (int i = 0; i < numberOfSublists; i++) {
if (!bigList.iterator().hasNext()) {
break;
}
result.get(i).add(bigList.poll());
}
}
return result;
}
Переданный bigList не обязательно должен быть LinkedList, это может быть любой Iterable.

Особенно ненавижу первый цикл, в котором я создаю подсписки.

Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/412 ... ts-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»