

以下のように`map`のキーに自作クラスを指定することはありますでしょうか。  
ただし、自作クラスは`equals`と`hashCode`はオーバーライドせず、  
あくまで参照アドレスをキーにする感じです。

[code]

    Person p1 = new Person("AAA",10);
    Person p2 = new Person("BBB",20);
    
    Map<Person, Boolean> map  = new LinkedHashMap<>();
    map.put(p1, true);
    map.put(p2, false);
    
    map.get(p1);
    map.get(p2);
    
[/code]


CC BY-SA 4.0
2022-07-15T18:26:15.377
90007
2022-07-16T00:16:34.173
2022-07-15T23:47:41.847
9820
53549
question
java
自作クラスをマップのキーにする方法


ご質問の趣旨は「企業やオープンソースプロジェクトなどの大規模な開発現場で、`map`のキーに自作クラスを指定することはあるのか」という理解でよろしいでしょうか。

理解が合っているならば、回答は「 **ごく普通に数え切れないほど使われている** (はず※)」です。  
※統計を取ったわけではないのでぼかしていますが、私は自作クラスを`Map`のキーにするソースコードを複数見かけたことがあります。

特に必要性がなければ`equals`のオーバーライドは行いません。  
例えば`Person`クラスの`name`と`age`変数が同一のインスタンスは`equals`を`true`にしたいならばオーバーライドしますが、インスタンスの同一性を確認する用途ならば継承元の`Object`クラスの`equals`メソッドをそのまま利用すれば事足りますのでオーバーライドは不要です。


CC BY-SA 4.0
2022-07-16T00:16:34.173
90011
2022-07-16T00:16:34.173
9820
90007
answer