private void filterPositionsArten(final AuftragFilter myFilter, final List<AuftragDO> list) { final Collection<AuftragsPositionsArt> auftragsPositionsArten = myFilter.getAuftragsPositionsArten(); if (CollectionUtils.isNotEmpty(auftragsPositionsArten)) { CollectionUtils.filter(list, object -> { final List<AuftragsPositionDO> positionen = ((AuftragDO) object).getPositionenExcludingDeleted(); // check if any of the current positions contains at least one AuftragsPositionsArt of the auftragsPositionsArten of the filter return CollectionUtils.isNotEmpty(positionen) && positionen.stream() .map(AuftragsPositionDO::getArt) .anyMatch(positionsArt -> auftragsPositionsArten.stream().anyMatch(art -> art == positionsArt)); }); } }