Использование гуавы может быть сделано, как это (без проверки нулевой и оптимизации на пустой коллекции):
// If any of the arrays empty or null, you can return straight away
Set<String> titlesB = new HashSet<String>(Collections2.transform(listB, (b) -> b.getTitle()));
Set<String> titlesA = new HashSet<String>(Collections2.transform(listA, (a) -> a.getTitle()));
// You can further optimize checking the smallest collection (contains is O(1) operation on Set)
Set<String> titlesIntersection = Collections2.filter(titlesB, (b) -> titlesA.contains(b));
List<Foo> commonA = Collections2.filter(listA, (a) -> titlesIntersection.contains(a.getTitle()));
List<Foo> commonB = Collections2.filter(listB, (b) -> titlesIntersection.contains(b.getTitle()));
Существует также, Apache Commons перекрестков
https://commons.apache.org/proper/commons-collections/javadocs/api-3.2.1/org/apache/commons/collections/CollectionUtils.html
Но в любом случае вам нужно будет использовать какой-то дополнительный шаг.
http://stackoverflow.com/questions/8636502/filtering-a-list-of-javabeans-with-google-guava – blank
Обратите внимание на раздел оговорки [этой ссылки] (https: // code. google.com/p/guava-libraries/wiki/FunctionalExplained) и посмотреть, может ли ваш случай подпадать под это. – Henrik