0

我有地图,其中每个键都是一个字符串。

要访问一个值,我可以.get使用Map. 如果我想返回与键匹配的任何内容,例如:"one, onetwo, onetwothree",获取包含字符串的所有值,"two"因此在这种情况下返回"onetwo, onetwothree"。这可能使用 aMap吗?

我目前使用一个列表并遍历每个字符串并检查字符串是否包含我正在搜索的值。

4

3 回答 3

1

Map任何类(afaik)都没有这种方法。您可以迭代键然后检查片段的包含,或使用完全不同的数据结构。我猜一个trie -map 会做到这一点。


编辑:
您目前所做的应该适用于所有情况的 99%。如果您要处理大量数据,请使用全文索引。(这可以用后缀树来完成)

于 2012-09-13T21:05:56.127 回答
1

使用 aHashMap您将必须遍历所有键,并且一旦键与您的模式匹配,然后收集该值并继续执行直到完成。
使用 aTreeMap您可以按排序顺序获取键,因此您可以使用此属性进行更有效的搜索。
但我认为你应该切换到不同的数据结构。A trieas @zeller 还指出似乎做你想做的事

于 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 回答