Наконец, я получил способ добиться этого следующим образом -
List<String> unavailable = list1.stream()
.filter(e -> (list2.stream()
.filter(d -> d.getStr().equals(e))
.count())<1)
.collect(Collectors.toList());
Но это также работает так, как ожидалось. Пожалуйста, дайте мне знать, насколько это эффективно? и если у кого есть другой способ сделать то же самое?