3

順序付けられた値のペアを追加/レンダリングするデータ構造を実装しようとしています。例えば。

orderedPair.add(value1, text1)  
orderedPair.add(value1, text2)  
orderedPair.add(value2, text3, data1)  
orderedPair.add(value2, data2)  
orderedPair.add(value1, text5)  

取得したら、次のように繰り返し返してほしい

value1, text1  
value1, text2  
value2, text3, data1 and so on.  

LinkedHashMapsまたはHashMapsのバリアントは、キーに基づく値のみを返し、取得しようとしているのは値と値のペアであるため、機能しません。値/テキストもデータも一意ではなく、どのキーにも基づいてフェッチできない可能性があることに注意してください。また、並べ替えられたリストは必要ありません。順序付きリストのみが必要です。

質問は次のとおりです。これを実現するために使用できるJavaのデータ構造はありますか?

私はこの目的に役立つものに出くわしませんでした。その場合、私はこれを達成するカスタムコレクションを書くことについて考えています。任意の提案/ヘルプは大歓迎です。

4

2 に答える 2

2

OPにとって有用であると思われるため、コメント内のディスカッションを回答にまとめます。

を作成しますclass Tuple。これがペア/トリプルになります。
このクラスは、固定数のパラメーターを使用して、またはオブジェクトのリストを保持するコンテナーとして実装できることに注意してください。

これらのTupleオブジェクトをで保持するList<Tuple>と、完了です。

を実装して、このクラスに実装することもできます。またhashCode()、やなどの他のコレクションで使用できるようになります。equals()ComparableTreeSetHashSet

于 2012-04-05T23:08:14.227 に答える
0

Treemap のようなリストのマップを使用するだけです

Map<Integer, List<Integer>> content = new Treemap<Integer, List<Integer>>();

if (not content.containsKey(value1)) {
   content.put(value1, new LinkedList<Integer>());
}
content.get(value1).add(text1)

これは関数orderedPair.addになります

次に、出力のために Map をトラバースし、各エントリについて、対応する List の各項目を書き出します

順序付けしたいので、 Comparator を Treemap コンストラクターに渡します。

于 2012-04-05T23:12:21.440 に答える