if( Arrays.asList("a","b","c").contains("a") )list1.stream() .map(Object1::getProperty) .anyMatch( list2.stream() .map(Object2::getProperty) .collect(toSet()) ::contains) // Example with predicate Predicate<Object> notInList1 = object -> list1.stream().noneMatch(object::equals); List<Object> missingInList1 = list2.stream().filter(notInList1).collect(Collectors.toList());