マップを実装し、挿入順序を保持する Java クラスですか? 質問する

マップを実装し、挿入順序を保持する Java クラスですか? 質問する

私は、ハッシュを使用せずにキーと値の関連付けを持つ Java クラスを探しています。現在行っていることは次のとおりです。

  1. に値を追加しますHashtable
  2. の反復子を取得しますHashtable.entrySet()
  3. すべての値を反復処理し、次の操作を実行します。
    1. Map.Entryイテレータの を取得します。
    2. Module値に基づいて、型のオブジェクト (カスタム クラス) を作成します。
    3. クラスを JPanel に追加します。
  4. パネルを表示します。

これの問題は、値を取得する順序を制御できないため、指定された順序で値を表示できないことです (順序をハードコーディングしない限り)。

ArrayListこれにはorを使用しますVectorが、コードの後半で、指定されたキーのオブジェクトを取得する必要がありますが、これはorModuleでは実行できません。ArrayListVector

Hashtableこれを実行する無料/オープンソースの Java クラス、または追加された時間に基づいて値を取得する方法をご存知の方はいらっしゃいますか?

ありがとう!

ベストアンサー1

私は提案するLinkedHashMapまたはTreeMapA はLinkedHashMapキーを挿入された順序で保持しますが、 a はa またはキーの自然な順序TreeMapによってソートされた状態で保持されます。ComparatorComparable

要素をソートしておく必要がないため、LinkedHashMapほとんどの場合、 は高速になります。Javadocによると、、、に対してはパフォーマンスTreeMapが ですが、 はそれぞれに対してです。O(log n)containsKeygetputremoveLinkedHashMapO(1)

特定のソート順ではなく、予測可能なソート順のみを期待するAPIの場合は、これら2つのクラスが実装するインターフェースの使用を検討してください。NavigableMapまたはSortedMapこれにより、特定の実装が API に漏れることがなくなり、後でそれらの特定のクラスまたは完全に異なる実装に自由に切り替えることができます。

おすすめ記事