LoginSignup
1
0

More than 1 year has passed since last update.

TreeMapのKeyに独自クラスのオブジェクトを格納する場合の注意点

Posted at

やりたかったこと

独自に作成したクラスHeroのインスタンスと倒した敵の数をペアでコレクションに格納し、画面表示をする。(表示順は不問)

やったこと

ペアで格納するためMapを採用。
(特に理由はなく)TreeMapを選択した。

Map <Hero,Integer> map = new TreeMap<>();

つまづいたこと

TreeMapは自然順序順に取り出す。
今回keyに独自クラスであるHero型を用いているがこの自然順序順を定義していないためエラーとなる。

解決策

今回は、表示順不問のため、HashMapを使用し回避。

Map<Hero,Integer> map = new HashMap<>();

表示順が指定されている場合はHeroクラスで自然順序順を定義する
下記は、Heroの名前順の例

public class Hero implements Comparable<Hero> {
	(省略)	
	public int compareTo(Hero obj) {
		return this.name.compareTo(obj.name);	
	}
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0