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