访问HashMap

时间:2018-06-27 05:38:19

标签: java hashmap

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的人员对象列表的最有效方法是什么?

1 个答案:

答案 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());
    }
}