gpt4 book ai didi

java - 从具有相同成员的列表中过滤对象

转载 作者:搜寻专家 更新时间:2023-10-31 19:51:45 25 4
gpt4 key购买 nike

我有一个对象列表。该对象看起来像这样:

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;
...
}

我需要找到具有相同 agendaCodevisitTypeCodescheduledTime 的元素,但我这辈子都找不到它完成了。

我试过这个:

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());

但它并没有按照我的预期进行。理想情况下,我会有一个列表列表,其中每个子列表都是共享相同 agendaCodevisitTypeCodescheduledTime 的 Slots 对象的列表。我在函数式编程方面苦苦挣扎,所以任何帮助或指示都会很棒!

这是 Java 11,我也在使用 vavr。

最佳答案

既然你提到你正在使用 vavr,那么这里是解决这个问题的 vavr 方法。

假设您有 io.vavr.collection.List(或 ArrayVectorStream 或类似的 vavr 集合)的访问量:

List<Visits> visits = ...;

final Map<Tuple3<String, String, String>, List<Visits>> grouped =
visits.groupBy(visit ->
Tuple.of(
visit.getAgendaCode(),
visit.getVisitTypeCode(),
visit.getScheduledTime()
)
);

或者用访问的java.util.List:

List<Visits> visits = ...;

Map<Tuple3<String, String, String>, List<Visits>> grouped = visits.stream().collect(
Collectors.groupingBy(
visit ->
Tuple.of(
visit.getAgendaCode(),
visit.getVisitTypeCode(),
visit.getScheduledTime()
)
)
);

关于java - 从具有相同成员的列表中过滤对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54828698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com