Лучший подход к решению итерации

#java #collections #java-stream

#java #Коллекции #java-stream

Вопрос:

 List<emp1> empList=new ArrayList<>();
        empList.add(new emp1(1,"code1","a1"));
        empList.add(new emp1(2,"code2","a2"));
Set<emp1> empSet=new HashSet<>();
        empSet.add(new emp1(1,"code3","a3"));

for(emp1 e:empList) {
            for(emp1 a:empSet) {
                if(e.getB().equals(a.getB())||e.getA()==a.getA()||e.getC().equals(a.getC())) {
                    System.out.println("equals");
                }
            }
        }

class emp1{
    int a;
    String b;
    String c;
  

Как добиться этого, используя lambda или любой другой лучший подход?
Он должен сравнить каждый элемент в списке, чтобы установить и сообщить, присутствует ли он?
необходимо сравнить каждый элемент a, b, c, если он присутствует, он должен возвращать equals

Ответ №1:

Несмотря на то, что forEach на самом деле не имеет особого смысла, но вы могли бы достичь этого как :

     empList.stream()
            .filter(empSet::contains)
            .map(a -> "equals")
            .forEach(System.out::println);
  

Комментарии:

1. необходимо сравнить каждый элемент a, b, c, если он присутствует, он должен возвращать equals. Contains проверит наличие всего одного объекта, если хэш-код переопределен. Но необходимо проверить отдельный элемент в объекте.