1

次のようなテキストファイルがあります。

code    appearance
----------------
j4t8    1
fj89    3
pf6n    1
j4t8    5

そして、最も表示されるコードで並べ替えたいと思います。ご覧のとおり(そしてgroup byを実行したいので)コードが重複しているため、HashMapの使用が問題になります(キーの重複)。何か案は?

4

4 に答える 4

0

ペアオブジェクトのコレクションが必要です。各ペアは、コードと外観を保持します。次に、Comparatorを使用してコレクションを並べ替えます。Comparatorは、各Pairオブジェクトの外観のみを比較し、コードを無視します。

于 2012-10-14T10:08:10.547 に答える
0

使用できます

HashMap map = new HashMap<String, List<Integer>>();

外観は、すべてのコードに関連付けられたリストに保存されます。次に、コードを指定すると、整数のリストを取得して反復処理するだけです。

于 2012-10-14T10:06:37.643 に答える
0

これが最善の解決策かどうかはわかりませんが、次のようなリストのマップを作成できます。

Map<String, List<Integer>> map = new HahsMap<String, List<Integer>>();
if(map.contains.(key))
{
  map.get(key).add(new_appearance_value);
}
else
{
  List<Integer> app = new ArrayList<Integer>();
  app.add(new_appearance_value);
  map.put(key, app);
}

マップキーがコードであり、外観の値がリストに追加されます。

注:どのコードがより多くの外観を持っているかを判断するには、各コードのリストのサイズを確認するだけです。

于 2012-10-14T10:12:10.170 に答える
0

Commons Collections MultiValueMapを使用して別のマップを装飾し、キーに複数の値を設定できるようにすることができます。

于 2012-10-14T10:16:16.253 に答える