Java - mooc.fi - 练习46:电影参考 - 返回地图的方法不能返回null

问题描述 投票:0回答:2

我有一个方法:

public Map<Film, Rating> getPersonalRatings(Person person){

    return this.personalRatings.get(person);
}

所以,基本概念是有一个

HashMap personalRatings <Person, Map<Film, Rating>>

其中包括另一个电影评级的HashMap作为地图值。

我的方法需要返回评级电影的地图,所以它确实如此。问题是,如果一个人从未评价过一部电影并且电影评级的HashMap为空,那该怎么回事呢?无法返回null。

java null return
2个回答
1
投票

在期望集合的地方返回null并不是一个好习惯。通常,这应该是一个空集合。在这种情况下,使用Java 8,您可以使用

this.personalRatings.getOrDefault(person, Collections.emptyMap());

0
投票

要避免null,可以使用computeIfAbsent()方法。

例如:

Map<Film, Rating> ratingByFilmForThisPerson = 
                 personalRatings.computeIfAbsent(person, k -> new HashMap<Film, Rating>());

如果存在映射,则返回该人的实际地图。 否则,它会创建并关联该人的空地图。 在任何情况下,它返回值:

© www.soinside.com 2019 - 2024. All rights reserved.