Map で比較するクラスは equals だけでなく hashcode もオーバーライドしなければならない

そうだったんですね...。しかしまじめに hashcode を実装なんてしたくないし、
いつも同じ hashcode を返すのもどうかと思うし、別のところで一意性を保証するようにしたほうがいいのか。