0

各キーが文字列であるマップがあります。

値にアクセスするには、 の.getメソッドを使用できますMap。たとえば、キーに一致するものを返したい場合"one, onetwo, onetwothree"は、文字列を含むすべての値を取得する"two"ため、この場合は return "onetwo, onetwothree". これは、を使用して可能Mapですか?

現在、リストを使用して各文字列を反復処理し、検索している値が文字列に含まれているかどうかを確認しています。

4

3 に答える 3

1

どのクラスにもそのようなメソッドはありませんMap(afaik)。キーを反復処理してフラグメントの内容を確認するか、まったく異なるデータ構造を使用できます。トライマップはそれを行うと思います。


編集:
現在行っていることは、すべてのケースの 99% でうまくいくはずです。大量のデータを処理している場合は、全文索引を使用してください。(これはSuffix ツリーで実行できます)

于 2012-09-13T21:05:56.127 に答える
1

aHashMapを使用すると、すべてのキーを反復する必要があり、キーがパターンに一致するとすぐに、その値を収集して、完了するまで続行します。
を使用するTreeMapと、ソートされた順序でキーを取得できるため、おそらくこのプロパティを使用してより効率的な検索を行うことができます。
しかし、別のデータ構造に切り替える必要があると思います。@zellertrieも指摘しているように、あなたが望むことをしているようです

于 2012-09-13T21:07:22.283 に答える
0

他の人が言ったように、Java コレクション API にはこれを達成するためのメソッドはありません。これは、マップのキーを反復して行う方法です

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("onesample", "1");
    map.put("onetwo", "2");
    map.put("onetwothree", "3");

    for(Entry<String, String> en: map.entrySet()) {
        if(en.getKey().contains("two")){
            System.out.println(en.getKey());
        }
    }
}
于 2012-09-13T21:21:17.987 に答える