使用對象的屬性作爲地圖條目的關鍵是不好的做法嗎?每次我這樣做,感覺都不對。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);
感覺那種錯誤。
這是'Map' - 索引查找的最常見用法之一。這裏沒有問題。儘管要注意,如果'Foo'是可變的,那麼如果'Foo'發生變化,索引將變得不正確。 – 2014-10-05 20:17:55
如果您擔心會浪費內存,在'String'鍵的特殊情況下,您可以利用該池(參見'String.intern'文檔)。 – Dici 2014-10-05 20:44:25
在某些情況下,您可能會考慮枚舉而不是類來完成相同的用例,但更好/不可變。然後你可以例如檢查一下'HashSet'中是否有內容,而不是'HashMap',這會消除這個特殊關注點(儘管我同意這不是一個值得關注的問題)。 – 2016-04-20 12:41:06