1

name (文字列、一意ではない) とid (整数、一意)の 2 つのプロパティを持つ一連の要素があります。同じ名前のすべての要素が一緒に保存され、いくつかの基準に従って並べ替えられます。

すべての要素が事前にわかっているため、挿入は 1 回で済むため、簡単に実行できます。削除は、順序 (最初のもの) または最終的に ID に従って行われます。値の読み取りは、最も一般的な (そして関連する) 操作です。

パフォーマンスは、データ構造の最大の要件です。マルチキー、リンクされたデータ構造、または混合ハッシュマップ/スタックが理想的だと思いましたが、そうではありません。私が検討したいくつかのオプションは次のとおりです。 - Guava テーブル (複数のキー) ですが、プッシュ/ポップの動作はありません。- LinkedHashMaps ですが、キーは 1 つしかありません。

もちろん、ID に基づいて要素を削除する必要がある場合は、LinkedHasMaps を使用して削除を繰り返すことができます。高性能ですでに実装されているものがあるかどうかを知りたいだけです。

助言がありますか?

みんなありがとう

4

1 に答える 1

1

を使用しMap<String, TreeSet<Integer>>ます。これにより、複数のアイテムを同じキーの下に格納し、整数値をソートしたままにすることができます。


アイデアは、複数の値を保持できるデータ構造への単一のキー マップがあるということです。ペアを挿入するには、次のname, valueようにします。

private Map<String, TreeSet<Integer>> map = new HashMap<>();

public void insert(String name, int value)
{
    if (! map.containsKey(name))
    {
        map.put(name, new TreeSet<Integer>());
    }
    map.get(name).add(value);
}

LinkedHashMapはキーの挿入順序を追跡するだけで、その順序で反復しHashMapます。.

于 2014-08-22T18:40:40.207 に答える