Когда пользователь правильно определен с hashCode
и equals
(в противном случае вы можете попробовать TreeSet
вместо HashSet
), выполните операции набора:
Set<User> common = new HashSet<>(a);
common.retainAll(b);
Если User.getName
не используется для равенства:
Set<User> common = new TreeSet<>(Comparator.comparing(User::getName));
common.addAll(a);
common.retainAll(b);
Два вложенных цикла for для списков (также как потоки) будут иметь сложность O (N²), тогда как это O (N.log N).