java根据字符串数组中的单词筛选列表
我有一个由另一个应用程序发送的List<Employees>
结果集
class Employee{
Long id;
String name;
String gender;
List<String> projects;
// Getters
// Setters
}
我需要编写一个方法或lambda表达式来使用从UI传递的一堆查询词(String[]
)过滤List
String[]
中的任何单词都可以匹配任何变量(id、名称、性别、项目)。应返回所有具有匹配项的列表。姓名的一部分也应匹配,例如:“john”应匹配示例中的列表1和3
List<Employee> filter (empList, queryWords) {
// code
}
你能给我指出实现这一目标的正确方向吗
example:
List:
1. 121, john doe , male , (proj1)
2. 125, sam , female, (proj4 proj5 proj9)
3. 129, john lam , male , (proj1 proj2 proj5)
4. 143, peter pan , male , (proj4 proj8)
5. 151, linda , female, (proj8 proj7 proj3 proj11)
Search Query Words:
1. "female" "proj3"- should return only No.5
2. "proj5" - should return only No.2 and 3
3. "john" - should return No.1 and 3
4. "pan" - should return No.4
# 1 楼答案
您可以将查询词数组转换为
Set
,从所有员工的成员创建Set
个属性,并使用retainAll
确定哪些员工至少有一个查询词:编辑:
正如JB Nizet所评论的那样,
retainAll
可以优雅地替换为anyMatch
表达式:# 2 楼答案
# 3 楼答案
写一个方法
如果雇员的至少一个字段与给定单词匹配,则返回true
然后使用