我有每个键都是String的映射。
要访问某个值,我可以使用.get
的{{1}}方法。如果我想返回与键匹配的任何内容,例如:Map
,请获取包含字符串"one, onetwo, onetwothree"
的所有值,因此在这种情况下返回"two"
。这可以使用"onetwo, onetwothree"
吗?
我当前正在使用List并遍历每个String并检查String是否包含我正在搜索的值。
答案 0 :(得分:1)
在任何Map
类(afaik)上都没有这样的方法。您可以迭代密钥然后检查片段的包含,或使用完全不同的数据结构。我想是trie - 地图就可以了。
编辑:
你目前所做的事情应该适用于99%的所有案例。如果您要处理大量数据,请使用full text indexing。 (可以使用Suffix trees)
答案 1 :(得分:1)
使用HashMap
,您必须遍历所有键,并且只要一个键与您的模式匹配,然后收集该值并继续操作直到完成。
使用TreeMap
,您可以按排序顺序获取密钥,以便您可以使用此属性进行更有效的搜索
但我认为您应该切换到不同的数据结构。 @zeller的trie
也指出了你想做的事情
答案 2 :(得分: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());
}
}
}