Map类中的方法命名:keySet(),entrySet()和values()

时间:2013-11-12 12:13:46

标签: java

我一直在考虑着名的Map类中三种方法的命名。要获取地图中的所有键,我们使用keySet(),对于条目有entrySet(),对于值,使用values()方法。

我觉得有点奇怪的是前两个方法在名称中包含返回的类型(set)。排除它会不会更好?这意味着方法名称将协调一致,看起来很不错(imho!):

keys()
entries()
values()

另一种选择是使用values()方法后缀:

keySet()
entrySet()
valueCollection()

对我而言,这看起来不太好,并且使代码难看。

这是一个哲学问题,因为改变方法命名会破坏向后兼容性。

关于这个主题的任何想法?

2 个答案:

答案 0 :(得分:1)

拥有Set的主要目的是表示返回的集合具有Set的特征(即)它不包含任何重复项。

由于values()与其他人一样,因此返回Collection(请注意,keySetentrySet也会返回一个集合,但是具体的集合{{1} }),在方法名称中包含Set单词非常简单。

答案 1 :(得分:0)

将方法名称保留为keySetentrySet表示您的意图是返回Set并承诺Set的特征,即不重复。

在将名称保持为keysentries时,您应该返回CollectionIterable,以便显示实施未提交给任何特定类型的集合的意图这可能会在将来发生变化。