У меня есть список объектов.Объект выглядит следующим образом:
public class Slots {
String slotType;
Visits visit;
}
public class Visits {
private long visitCode;
private String agendaCode;
private String scheduledTime;
private String resourceType;
private String resourceDescription;
private String visitTypeCode;
...
}
Мне нужно найти элементы, которые имеют одинаковые agendaCode
, visitTypeCode
и scheduledTime
, и я не могу этого сделать для своей жизни.
Я попробовал это:
Set<String> agendas = slotsResponse.getContent().stream()
.map(Slots::getVisit)
.map(Visits::getAgendaCode)
.collect(Collectors.toUnmodifiableSet());
Set<String> visitTypeCode = slotsResponse.getContent().stream()
.map(Slots::getVisit)
.map(Visits::getVisitTypeCode)
.collect(Collectors.toUnmodifiableSet());
Set<String> scheduledTime = slotsResponse.getContent().stream()
.map(Slots::getVisit)
.map(Visits::getScheduledTime)
.collect(Collectors.toUnmodifiableSet());
List<Slots> collect = slotsResponse.getContent().stream()
.filter(c -> agendas.contains(c.getVisit().getAgendaCode()))
.filter(c -> visitTypeCode.contains(c.getVisit().getVisitTypeCode()))
.filter(c -> scheduledTime.contains(c.getVisit().getScheduledTime()))
.collect(Collectors.toList());
Но он не делает то, что, как я думал, будет.В идеале у меня был бы список списков, где каждый подсписок представляет собой список объектов Slots, которые имеют одинаковые agendaCode
, visitTypeCode
и scheduledTime
.Я борюсь с функциональным программированием, поэтому любая помощь или указатели были бы великолепны!
Это Java 11, и я также использую vavr.