我有一个对象列表,例如List<Family>
个族。
我还有另一个带有FamilyName的字符串列表,说List<String>
名称。
我想以最理想的方式来获取所有与家庭名称相匹配的家庭列表。
例如:假设我有5个家庭。 1至5,名称为Fam1,Fam2 .... Fam5
还有names = ["Fam1", "Fam2"]
如何获取包含Fam1和Fam2的家庭名单?
如果我想匹配2个参数而不是1个,该怎么办?
我试图查看是否有一种方法可以不遍历整个列表并调用任何Groovy api来做到这一点?
答案 0 :(得分:1)
我想以最理想的方式获取所有家庭的清单 FamilyNames与名称相匹配。
很难说什么是最佳的,因为您可以针对不同的事物进行优化(最快的运行时间,最少的内存,最少的代码,最惯用的方式,等等)
您尚未说明正在使用什么JDK,因此尚不清楚是否愿意使用流。
一种非常简单的Groovy方法:
class Family {
String name
}
List<Family> families = []
families << new Family(name: 'Fam1')
families << new Family(name: 'Fam2')
families << new Family(name: 'Fam4')
families << new Family(name: 'Fam5')
List names = ['Fam1', 'Fam2', 'Fam3']
List results = names.findAll { name ->
families.find { family ->
family.name == name
}
}
// results will be [Fam1, Fam2]
我希望有帮助。
答案 1 :(得分:-2)
class Family {
String name
}
List<Family> families = []
families << new Family(name: 'Fam1')
families << new Family(name: 'Fam2')
families << new Family(name: 'Fam4')
families << new Family(name: 'Fam5')
List names = ['Fam1', 'Fam2', 'Fam3']`enter code here`
families.findAll { it -> it.name in names}