ComparisonChainはcompareToの記述を単純にできるクラスです。ComparisonChainを使わないでcompareToを実装してみます。
例として、Lv、攻撃力、防御力の順でソート書ける場合のcompareToの実装を書いてみます。
Integer lv = 50;
Integer atk = 124;
Integer def = 69;
@Override
public int compareTo(Object3 o) {
int i1 = lv.compareTo(o.lv);
if (i1 != 0) {
return i1;
}
int i2 = atk.compareTo(o.atk);
if (i2 != 0) {
return i2;
}
return def.compareTo(o.def);
}
上記のcompareToの実装をguavaで書いてみます。
public int compareTo(Object4 o) {
return ComparisonChain.start()
.compare(lv, o.lv)
.compare(atk, o.atk)
.compare(def, o.def)
.result();
}
かなりすっきりしました。複数の値を比較する場合はぜひ使用すると良いと思います。
最終更新:2014年01月06日 15:13