#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 проверит наличие всего одного объекта, если хэш-код переопределен. Но необходимо проверить отдельный элемент в объекте.