gpt4 book ai didi

java - 如何使用流访问父对象变量

转载 作者:行者123 更新时间:2023-12-02 09:54:17 24 4
gpt4 key购买 nike

我需要过滤掉子对象后,才能访问groupCoverPeriod对象。如何使用流进行此操作..我编写了以下代码,但在** groupCoverPeriod *处收到错误(请忽略前缀)并在代码中加上**)

       boolean isCalMethodCal=newInsurancePeriod.getPensionGroup().getGroupCoverPeriods().stream()
.filter(groupCoverPeriod -> groupCoverPeriod.getStartDate().isBefore(newInsurancePeriod.getStartDate()) && (
Objects.isNull(newInsurancePeriod.getEndDate()) || groupCoverPeriod.getStartDate().isAfter(newInsurancePeriod.getEndDate())))
.filter(groupCoverPeriod -> !groupCoverPeriod.getCalcMethod().equalsIgnoreCase("kiinnitetty"))
.flatMap(groupCoverPeriod -> groupCoverPeriod.getInsuranceCoverInfos().stream())
.filter(ici -> ici.getBenefitType().equalsIgnoreCase("VE"))
.anyMatch(ici -> !ici.getOverServiceNotification().equals(true)
|| !ici.getConsideredEarningsInRTAge().equals(true)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6300") && beginDate >= 6300)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6500") && beginDate >= 6500)
|| (ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("ei") || ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("elakemuunnos"))
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("yhteinen") && groupCoverPeriod.getGroupSuplInsuranceRTAge() >= beginDate)
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("yksilollinen") && insurancePeriod.getPersonsCoverInfo().getAgeForSupplementaryPension() >= beginDate)
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("wtyel_vahvistettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate)
|| (**groupCoverPeriod**.getTerminationAge().equalsIgnoreCase("wtyel_ennustettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate));


我什至尝试过,但这并没有返回预期的结果。

newInsurancePeriod.getPensionGroup().getGroupCoverPeriods().stream()
.filter(groupCoverPeriod -> groupCoverPeriod.getStartDate().isBefore(newInsurancePeriod.getStartDate()) && (
Objects.isNull(newInsurancePeriod.getEndDate()) || groupCoverPeriod.getStartDate().isAfter(newInsurancePeriod.getEndDate())))
.filter(groupCoverPeriod -> !groupCoverPeriod.getCalcMethod().equalsIgnoreCase("kiinnitetty"))
.forEach(groupCoverPeriod -> {
boolean isCalMethodCal = groupCoverPeriod.getInsuranceCoverInfos().stream()
.filter(ici -> ici.getBenefitType().equalsIgnoreCase("VE"))
.anyMatch(ici -> !ici.getOverServiceNotification().equals(true)
|| !ici.getConsideredEarningsInRTAge().equals(true)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6300") && beginDate >= 6300)
|| (ici.getConsideredStatutoryEarningsInRTAge().equalsIgnoreCase("6500") && beginDate >= 6500)
|| (ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("ei") || ici.getDeferralIncreaseSupplementaryPension().equalsIgnoreCase("elakemuunnos"))
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("yhteinen") && groupCoverPeriod.getGroupSuplInsuranceRTAge() >= beginDate)
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("yksilollinen") && insurancePeriod.getPersonsCoverInfo().getAgeForSupplementaryPension() >= beginDate)
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("wtyel_vahvistettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate)
|| (groupCoverPeriod.getTerminationAge().equalsIgnoreCase("wtyel_ennustettu") && Integer.parseInt(ykService.getPersonBirthYear(newInsurancePeriod.getPerson().getPersonNumber())) >= beginDate));

最佳答案

您的过滤器似乎到处都有。为什么要再次检查组保障期?

尝试重新排列代码,如下所示:

Predicate<GroupCoverPeriod> groupCoverPredicates = // all group cover predicates here filter predicates here
Predicate<InsuranceCoverInfo> iciPredicates = // all insurance cover info filter predicates here;

boolean isCalMethodCal = newInsurancePeriod.getPensionGroup().getGroupCoverPeriods().stream()
.filter(groupCoverPeriod -> groupCoverPredicates)
.flatMap(groupCoverPeriod -> groupCoverPeriod.getInsuranceCoverInfos().stream())
.anyMatch(ici -> iciPredicates);

关于java - 如何使用流访问父对象变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56110605/

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