Выбрать из коллекции Java, используя потокJAVA

Программисты JAVA общаются здесь
Гость
Выбрать из коллекции Java, используя поток

Сообщение Гость »

Я хочу знать, существует ли реализация «извлечения» элементов из реализации коллекции на основе заданного предиката, то есть удаления указанных элементов после извлечения. Чтобы представить, что я имею в виду, рассмотрим следующий вариант использования:

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

Set
 parentSet = parentDao.getParents();
Set parentIdSet = parentSet.stream().map(Parent::getId).collect(Collectors.toSet())
Set childrenSet = childDao.getChildByParentIds(parentIdSet);

for (Parent parent : parentSet) {
Set childrenOfThisParent = childrenSet
.stream()
.pluck((Child c) -> Objects.equals(parent.getId(), c.getParentId()))
.collect(Collectors.toSet());

parent.setChildren(childrenOfThisParent);
}

// At this line, childSet should be empty.
assert(childrenSet.isEmpty());
Я хочу, чтобы каждая итерация после того, как Set была отфильтрована по его родительскому идентификатору и инициализирована как ChildrenOfThisParent, я хочу, чтобы они были удален из childSet и уменьшите размер() childSet. По сути, поиск в childSet должен быть быстрее на следующей итерации. Хотя на данный момент мне нужно провести тест, чтобы узнать, будет ли более быстрое время поиска существенным.


Подробнее здесь: https://stackoverflow.com/questions/782 ... ing-stream

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