アットウィキロゴ

ComparisonChain

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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。