这是一个相当广泛的问题,但让我们看看我是否理解正确。所以你想对两个列表应用一组标准吗?
您可以使用过滤器链来实现此目的。想象一下,你有如下界面:
interface EligibilityCriterion {
fun apply(jobs: List<Job>, applicant: JobApplicant): List<Job>
}
现在您需要实现您拥有的任何资格标准,即每个EligibilityCriterion 接口的实现。单一方法应该返回申请人仍然有资格的Jobs。
在另一个类中,您将获得EligibilityCriterion 的所有实现,如下所示(为简单起见,我假设为 Spring,但您可以通过任何其他适用于您的情况的方式获得它们):
@Service
class JobsService(private val eligibilityCriteria: List<EligibilityCriterion>) {
fun findJobsForApplicant(jobs: List<Job>, applicant: JobApplicant): List<Job>{
eligibilityCriteria.fold(jobs) { jobsFold, eligibilityCriterion ->
eligibilityCriterion.apply(jobsFold, applicant)
}
}
}
这里的想法是您一次应用一个EligibilityCriterion,然后将过滤后的List<Job> 传递给下面的EligibilityCriterion,直到全部应用。最后,您拥有了所有applicant 符合条件的Jobs。
鉴于您有一个JobApplicants 列表,您需要对其进行迭代并将标准应用于每一个。
您可以在以下在线资源中阅读更多相关信息:
P.S.:对不起 Kotlin + Spring 代码,但我觉得用代码而不是文字更容易解释和理解这些东西。