1

Guava multimap を使用して、テキストファイルからデータを保存します。テキストファイルのデータ形式は次のようになります。

p1 10
p2 30
p3 40
p1 20
p2 50
p3 60
..
..

最初の列がキーで、2 番目の列が値です。スコア(値)を最高から最低に並べ替えたいのですが、マルチマップを並べ替える方法がわかりません..または、その種のデータを保存するためのより良いストレージはありますか?

他に考えたことは、名前用とスコア用の 2 つの arraylist を作成することです。

2 つのリストをリンクできるかどうかはわかりません。

list1 = {p1,p2,p3}
list2 = {10, 20, 30, 40, 50, 60}

10と20を指示するp1インデックス。このようなことは可能ですか?

4

1 に答える 1

1

あなたはこのようなことを試すことができます:-

 public static ImmutableMultimap<Integer, MyObject> indexOnScore(Iterable<MyObject> i) {
  List<MyObject> sorted = Ordering.natural().onResultOf(myObjectToScore())
  .sortedCopy(i);
   return Multimaps.index(sorted, myObjectToScore());
}

別のオプションは、を作成し、値のコンパレータとしてTreeMultimap使用することです。Ordering.arbitrary()

于 2012-11-24T12:47:10.407 に答える