Class DataAcess{
private Map<Integer, Person> persList;
public DataAccess(Map persList){
this.persList = persList;
}
public List<Person> getPersByDept(String dept){
\\what is the efficient way to get data
}
}
Class Person {
Integer id;
Dept dept;
}
Class Dept {
String id;
}
在getPersByDept方法中访问哈希图以获取具有特定部门ID的人员对象列表的最有效方法是什么?
答案 0 :(得分:0)
如果您只想搜索而没有任何其他结构:
public List<Person> getPersByDept(String dept) {
return persList.values().stream()
.filter(person-> Objects.nonNull(person.dept))
.filter(person -> Objects.equals(person.dept.id, dept))
.collect(Collectors.toList());
}
但是,如果您想提高效率,则需要准备一张地图:
class DataAcess {
private Map<Integer, Person> persList;
private Map<String, List<Person>> personsByDebt;
public DataAcess(Map persList) {
this.persList = persList;
this.personsByDebt=this.persList.values().stream()
.filter(person-> Objects.nonNull(person.dept))
.collect(Collectors.groupingBy(person-> person.dept.id));
}
public List<Person> getPersByDept(String dept) {
return personsByDebt.getOrDefault(dept, Collections.emptyList());
}
}