私は、ハッシュを使用せずにキーと値の関連付けを持つ Java クラスを探しています。現在行っていることは次のとおりです。
- に値を追加します
Hashtable
。 - の反復子を取得します
Hashtable.entrySet()
。 - すべての値を反復処理し、次の操作を実行します。
Map.Entry
イテレータの を取得します。Module
値に基づいて、型のオブジェクト (カスタム クラス) を作成します。- クラスを JPanel に追加します。
- パネルを表示します。
これの問題は、値を取得する順序を制御できないため、指定された順序で値を表示できないことです (順序をハードコーディングしない限り)。
ArrayList
これにはorを使用しますVector
が、コードの後半で、指定されたキーのオブジェクトを取得する必要がありますが、これはorModule
では実行できません。ArrayList
Vector
Hashtable
これを実行する無料/オープンソースの Java クラス、または追加された時間に基づいて値を取得する方法をご存知の方はいらっしゃいますか?
ありがとう!
ベストアンサー1
私は提案するLinkedHashMap
またはTreeMap
A はLinkedHashMap
キーを挿入された順序で保持しますが、 a はa またはキーの自然な順序TreeMap
によってソートされた状態で保持されます。Comparator
Comparable
要素をソートしておく必要がないため、LinkedHashMap
ほとんどの場合、 は高速になります。Javadocによると、、、に対してはパフォーマンスTreeMap
が ですが、 はそれぞれに対してです。O(log n)
containsKey
get
put
remove
LinkedHashMap
O(1)
特定のソート順ではなく、予測可能なソート順のみを期待するAPIの場合は、これら2つのクラスが実装するインターフェースの使用を検討してください。NavigableMap
またはSortedMap
これにより、特定の実装が API に漏れることがなくなり、後でそれらの特定のクラスまたは完全に異なる実装に自由に切り替えることができます。