我确实有一个方法:
public Map<Film, Rating> getPersonalRatings(Person person){
return this.personalRatings.get(person);
}
所以,基本概念是有一个
HashMap personalRatings <Person, Map<Film, Rating>>
其中包括另一个电影评级的哈希图作为地图值。
我的方法需要返回额定电影的地图,因此确实如此。问题是,如果一个人从未对一部电影进行评级并且电影评级的哈希图为零,它应该返回什么。不能返回空值。
在
需要集合的地方返回 null 不是一种好的做法。通常,这应该是一个空集合。在这种情况下,使用 Java 8,您可以使用
this.personalRatings.getOrDefault(person, Collections.emptyMap());
若要避免 null,可以使用 computeIfAbsent()
方法。
例如这个:
Map<Film, Rating> ratingByFilmForThisPerson =
personalRatings.computeIfAbsent(person, k -> new HashMap<Film, Rating>());
如果存在映射,则返回人员的实际映射。
否则,它将为该人员创建并关联一个空地图。
在任何情况下,它都返回值: