2011-11-29 6 views
14

私は、キー/値のペアを挿入することができます何かをしたい、と順番は私がで項目を挿入する順序で挿入するために基づいて順序付けされる。Javaのキー/値のペアを持って集まり、注文

私が持っていますマップのいくつかの記事を見たが、私はそれらのために自分のコンパレータを記述する必要があるようだ。

私が挿入する最初のアイテムを最初に格納し、2番目をコレクションの2番目のアイテムにしたいとします。

+1

をこれらをチェックアウト:

また、詳細については、マップの次のタイプをチェックしてください"LinkedHashMap"と呼ばれる。 –

答えて

18

javadocsから、LinkedHashMapを使用してみてください:

Mapインタフェースのハッシュテーブルとリンクリストの実装、それは二重リンクを維持するに予測可能な繰り返し順序でこの実装は、HashMapのとは異なりすべてのエントリを実行しているリストこのリンクリストは、通常、キーがマップに挿入された順序(挿入順序)である反復順序を定義します。

7

キーと値を含むclassを作成し、お気に入りのList実装に格納するだけではどうですか。

class Pair { 
    Key k; 
    Value v; 
} 

List<Pair> stuff = new ArrayList<Pair>(); 

Pair p = new Pair(); 
... 
stuff.add(p); 
1

あなたは

List<NameValuePair> values = new Arraylist<NameValuePair>(); 

名前/値のオブジェクトとリストを使用する必要があり、その後、通常のリスト

class NameValuePair { 
    private name; 
    private value; 

    ... get/set 
} 
+0

私はLinkedHashMapあなたがこのルートに行くならば、Map.Entryを見て、自分のNameValuePairクラスを定義するのではなく、それを使うことを強く考えてください。 – user949300

+1

@ user949300: 'Map.Entry 'はクラスではなく、インターフェースであり、それを実装する公開JDKクラスは認識していません。私はそれにもかかわらず、 'NameValuePair'がそれを実装すべきであることに同意します。 – ruakh

+2

@ruakh AbstractMap.SimpleEntryとAbstractMap.SimpleImmutableEntryをご覧ください。 – user949300

0

のLinkedHashMapが適切であるあなたと同じように、リストを使用するように思えますあなたが探しているデータ構造のタイプ! これは、HashMap(キーと値のペアに要素を含めることができます)を拡張し、エントリのリンクリスト(挿入順序を指定します)を保持します。イッツクラスAbstractMapに移動

https://docs.oracle.com/javase/8/docs/api/

HashMapの& TreeMapの

HashTable- http://docs.oracle.com/javase/7/docs/api/java/util/Hashtable.html

関連する問題