Java Map:使用值对象的属性作为关键,不好的做法?

时间:2014-10-05 20:10:43

标签: java map

使用对象的属性作为地图条目的键是不好的做法吗?每次我这样做,都会感觉不对。

例如:

class Foo {
  String name;
  String bar;
}

然后使用这样的地图:

Foo foo = new Foo();
foo.name = "foo bar";
foo.bar = "blaaaa";

Map<String, Foo> foos = new HashMap<>();
foos.add(foo.name, foo);

感觉有点不对劲。

1 个答案:

答案 0 :(得分:1)

乍一看感觉不对。

但是使用字段是合理的,可能有点多余但合法。 键的值来自何处并不重要!因为Map的目的是检索元素。并且这样做可以做到这一点。

如果您感到内疚,如果没有任何副作用,您可以从课程中删除该字段。

可能有什么问题 - 你没有使用这些领域的方法。请考虑以下场景:您想将两个字符串组合为新键。如果你已经引用了一千个字段,那你就不走运了!您只需要替换该字段的所有出现。如果您不小心更换了其他内容,这可能会导致错误和不便。

但是如果你有一个方法,你只需更改方法中的部分就可以了。