list1.stream() .map(Object1::getProperty) .anyMatch( list2.stream() .map(Object2::getProperty) .collect(toSet()) ::contains) // Example with predicate Predicate notInList1 = object -> list1.stream().noneMatch(object::equals); List missingInList1 = list2.stream().filter(notInList1).collect(Collectors.toList());