各キーが文字列であるマップがあります。
値にアクセスするには、 の.get
メソッドを使用できますMap
。たとえば、キーに一致するものを返したい場合"one, onetwo, onetwothree"
は、文字列を含むすべての値を取得する"two"
ため、この場合は return "onetwo, onetwothree"
. これは、を使用して可能Map
ですか?
現在、リストを使用して各文字列を反復処理し、検索している値が文字列に含まれているかどうかを確認しています。
各キーが文字列であるマップがあります。
値にアクセスするには、 の.get
メソッドを使用できますMap
。たとえば、キーに一致するものを返したい場合"one, onetwo, onetwothree"
は、文字列を含むすべての値を取得する"two"
ため、この場合は return "onetwo, onetwothree"
. これは、を使用して可能Map
ですか?
現在、リストを使用して各文字列を反復処理し、検索している値が文字列に含まれているかどうかを確認しています。
どのクラスにもそのようなメソッドはありませんMap
(afaik)。キーを反復処理してフラグメントの内容を確認するか、まったく異なるデータ構造を使用できます。トライマップはそれを行うと思います。
編集:
現在行っていることは、すべてのケースの 99% でうまくいくはずです。大量のデータを処理している場合は、全文索引を使用してください。(これはSuffix ツリーで実行できます)
aHashMap
を使用すると、すべてのキーを反復する必要があり、キーがパターンに一致するとすぐに、その値を収集して、完了するまで続行します。
を使用するTreeMap
と、ソートされた順序でキーを取得できるため、おそらくこのプロパティを使用してより効率的な検索を行うことができます。
しかし、別のデータ構造に切り替える必要があると思います。@zellertrie
も指摘しているように、あなたが望むことをしているようです
他の人が言ったように、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());
}
}
}