考虑我希望方法foo
返回LinkedHashMap
(数据按插入顺序排序)。原因是这个Map
将由数据库填充,我希望它反映从查询返回的顺序。定义方法签名的正确方法是什么?
public LinkedHashMap<String, String> foo()
public Map<String, String> foo()
第一种方法的优点是可以向客户宣传地图的订购方式,而第二种则更为通用。
答案 0 :(得分:1)
肯定是第二个 - 您应该更喜欢接口并隐藏实现 - 如果您将来决定使用Map<String, List<Map.Entry<AB, Float>>> collect = mapWithData.entrySet()
.stream()
.collect(Collectors.groupingBy(abEntry-> abEntry.getKey().getB()));
的另一个实现,则不需要使用此代码更改另一个方法中的任何内容
另请注意,不允许按返回类型重载方法,因此使用常规类型似乎是合适的
答案 1 :(得分:1)
这取决于该方法将如何使用/专业化。但是,我建议第二个方法。
考虑一个场景,需要重写此方法以返回let表示排序值(即TreeMap
)或未排序/无序值(HashMap
)。在这种情况下,我们将无法override
此方法,并且必须创建另一种方法。