Java 包含hashmap键中的操作
“我的hashmap”包含以下两个条目之一:Java 包含hashmap键中的操作,java,hashmap,Java,Hashmap,“我的hashmap”包含以下两个条目之一:**key:它来自另一个站点的源站点@@noon**和**value:它来自另一个站点的@@ADJ源站点@@noon** 我只想根据“”的关键部分从另一个站点获取该密钥的值“`` 如果hashmap包含类似于“它从另一个站点起源的站点”的键,那么它应该首先选择“它的站点”,然后选择“从另一个站点起源的站点”,而不是“@@”后面的部分。否。它将是一个字符串,因此它也会选择“@@”后面的任何内容。如果需要基于子字符串的值,则必须在映射上迭代,如下所示: S
**key:它来自另一个站点的源站点@@noon**和**value:它来自另一个站点的@@ADJ源站点@@noon**
我只想根据“”的关键部分从另一个站点获取该密钥的值“``
如果hashmap包含类似于“它从另一个站点起源的站点”的键,那么它应该首先选择“它的站点”,然后选择“从另一个站点起源的站点”,而不是“@@”后面的部分。否。它将是一个字符串,因此它也会选择“@@”后面的任何内容。如果需要基于子字符串的值,则必须在映射上迭代,如下所示:
String value = map.get("its...");
if (value != null) {
//exact match for value
//use it
} else {//or use map or map which will reduce your search time but increase complexity
for (Map.Entry<String, String> entry : map.entrySet()) {
if (entry.getKey().startsWith("its...")) {
//that's the value i needed.
}
}
}
String value=map.get(“its…”);
if(值!=null){
//价值的精确匹配
//使用它
}否则{//或使用map或map,这将减少搜索时间但增加复杂性
对于(Map.Entry:Map.entrySet()){
if(entry.getKey().startsWith(“its…”)){
//这就是我需要的价值。
}
}
}
<代码> > p>您可以考虑使用。它是一种类似于TreeMap
的数据结构,其中键是字符串和任何类型的值。对于存储来说,这是一种最佳选择,因为键之间的公共字符串前缀是共享的,但是对于您的用例来说,有趣的特性是您可以搜索特定的前缀并获得地图条目的排序视图
下面是一个实现示例
import org.apache.commons.collections4.trie.PatriciaTrie;
public class TrieStuff {
public static void main(String[] args) {
// Build a Trie with String values (keys are always strings...)
PatriciaTrie<String> pat = new PatriciaTrie<>();
// put some key/value stuff with common prefixes
Random rnd = new Random();
String[] prefix = {"foo", "bar", "foobar", "fiz", "buz", "fizbuz"};
for (int i = 0; i < 100; i++) {
int r = rnd.nextInt(6);
String key = String.format("%s-%03d@@whatever", prefix[r], i);
String value = String.format("%s@@ADJ %03d@@whatever", prefix[r], i);
pat.put(key, value);
}
// Search for all entries whose keys start with "fiz"
SortedMap<String, String> fiz = pat.prefixMap("fiz");
fiz.entrySet().stream().forEach(e -> System.out.println(e));
}
}
您需要一个hashmap的hashmap。@Real怀疑论者我只使用一个hashmap,在获取键值时,它应该像“Contains”函数或sql中的查询一样工作。您不能更改hashmap的工作方式。你需要改变实现——要么是线性扫描(这使得你的地图和数组一样糟糕),要么就是地图。你可以考虑使用<代码> TeeMePa/COD>。您可以搜索一个键值,然后从那里开始依次迭代。或者,OP可以创建一个映射图
fiz-000@@whatever
fiz-002@@whatever
fiz-012@@whatever
fiz-024@@whatever
fiz-027@@whatever
fiz-033@@whatever
fiz-036@@whatever
fiz-037@@whatever
fiz-041@@whatever
fiz-045@@whatever
fiz-046@@whatever
fiz-047@@whatever
fizbuz-008@@whatever
fizbuz-011@@whatever
fizbuz-016@@whatever
fizbuz-021@@whatever
fizbuz-034@@whatever
fizbuz-038@@whatever