1

ArrayListは位置get(position)でアイテムを取得する機能を提供し、LinkedHashTableは並べ替えを提供することを知っていますが、位置でアイテムを取得することはできません。だから、質問:機能を備えたJavaのジェネリックコレクションはありますか?

  • 並べ替え

  • 位置で取得

  • Key/Valueジェネリック型を提供します。

必要なジェネリックが存在する場合は、リストされている機能のコード例を教えてください。

4

2 に答える 2

4

TreeMapまたはSortedMapをお探しですか??

TreeMapとSortedMapはどちらも以下を提供します。

  1. キー要素の自然ソートを提供します。
  2. キーと値のペアです
  3. キーに基づいて値を取得します。

ところで:

LinkedHashMapは、挿入順序を維持するだけで、並べ替えられません。順序があるだけです。

于 2012-11-23T05:42:32.097 に答える
2

以前に物事を複雑にしすぎたことをお詫びします!

TreeMapを使用します。あなたがしたいとき

get(position)

次の手順を実行してください。

K key = treemap.getKeys().get(position)
V value = treemap.get(key);

==========================

以前からの私の古い複雑な間違った答え:

にcomparableを実装し、KにComparableが実装されているArrayList<Pair<K implements Comparable,V>>場所を使用できます。次に、ArraylistでPair<K,V>使用できます。Collections.sort(List<Pair<K,V>)

次に、Kで要素を取得できるようにを維持しHashMap<K,V>ます。つまり、両方のデータ構造を更新することを忘れないでください。これは、要素を追加するO(N)を意味します:(。また、ロジックを単純化するために、HashMapとArrayListをオブジェクトにラップします。

public class Pair<K extends  Comparable<K>, V> implements Comparable {

    private final K first;

    private final V second;

    public Pair(K first, V second) {
        this.first = first;
        this.second = second;
    }

    public K getFirst() {
        return first;
    }

    public V getSecond() {
        return second;
    }

    public int compareTo(K other) ; // TODO
}
于 2012-11-23T05:56:06.913 に答える