Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建一个方法来获取hashmap中值(字符串)的键_Java_Hashmap_Hashset - Fatal编程技术网

Java 如何创建一个方法来获取hashmap中值(字符串)的键

Java 如何创建一个方法来获取hashmap中值(字符串)的键,java,hashmap,hashset,Java,Hashmap,Hashset,我有一个任务,这是我的HashMap初始化。。我只能使用标准的JavaAPI private static HashMap<String, HashSet<String>> hMap = new HashMap<String, HashSet<String>>(); private static HashMap hMap=new HashMap(); 是否可以获取指定值的键,比如getkey(hMap,“today”),然后返回today所在的

我有一个任务,这是我的HashMap初始化。。我只能使用标准的JavaAPI

private static HashMap<String, HashSet<String>> hMap = new HashMap<String, HashSet<String>>();
private static HashMap hMap=new HashMap();
是否可以获取指定值的键,比如getkey(hMap,“today”),然后返回today所在的键

还有,有没有一种方法可以获取哈希集中某个键的最后一个值

感谢您的帮助,谢谢

你真正想要的是

bimap(或“双向映射”)是保留其值及其键唯一性的映射。此约束使bimap支持“反向视图”,这是另一个bimap,包含与此bimap相同的条目,但具有反向键和值

如果你不能使用它,那么你就必须在地图条目中循环寻找一个速度不太快的匹配项。

你真正想要的是

bimap(或“双向映射”)是保留其值及其键唯一性的映射。此约束使bimap支持“反向视图”,这是另一个bimap,包含与此bimap相同的条目,但具有反向键和值


如果你不能使用它,那么你就必须在地图条目中循环寻找一个速度不太快的匹配项。

尽可能地使用
地图

public static <K,V> K getKey(Map<K,V> map,V val){
    for(Map.Entry<K,V> entry:map.entrySet()){
        if(entry.getValue().equals(val)){
            return entry.getKey();
        }
    }
    return null;
}
publicstatickgetkey(Map-Map,V-val){
对于(Map.Entry:Map.entrySet()){
if(entry.getValue().equals(val)){
return entry.getKey();
}
}
返回null;
}
这将只返回匹配的第一个值的键。如果要返回特定值的所有键,则可以修改此方法,将它们累积到
列表中
,然后返回该值


(不要对快速检索抱太大希望…

一般来说,只需一张
地图

public static <K,V> K getKey(Map<K,V> map,V val){
    for(Map.Entry<K,V> entry:map.entrySet()){
        if(entry.getValue().equals(val)){
            return entry.getKey();
        }
    }
    return null;
}
publicstatickgetkey(Map-Map,V-val){
对于(Map.Entry:Map.entrySet()){
if(entry.getValue().equals(val)){
return entry.getKey();
}
}
返回null;
}
这将只返回匹配的第一个值的键。如果要返回特定值的所有键,则可以修改此方法,将它们累积到
列表中
,然后返回该值


(不要对快速检索抱太大希望…

但实际上,您可以拥有多个带有“today”的键。所以我用键返回List.toString

private static HashMap<String, HashSet<String>> hMap = new HashMap<String, HashSet<String>>();

public static String getKey(Map<String, HashSet<String>> map, String value) {
    List<String> returnKey = new ArrayList<String>();

    for (String s : map.keySet()) {
        if (map.get(s).contains(value)) {
            returnKey.add(s);
        }
    }

    return returnKey.toString();

}

public static void main(String[] args) {
    // put sth to hMap
    System.out.println(getKey(hMap, "today"));
}
private static HashMap hMap=new HashMap();
公共静态字符串getKey(映射映射,字符串值){
List returnKey=new ArrayList();
对于(字符串s:map.keySet()){
if(map.get.contains(value)){
returnKey.add(s);
}
}
return returnKey.toString();
}
公共静态void main(字符串[]args){
//把某物放到hMap上
System.out.println(getKey(hMap,“今日”);
}

但实际上,您可以有多个带有“today”的键。所以我用键返回List.toString

private static HashMap<String, HashSet<String>> hMap = new HashMap<String, HashSet<String>>();

public static String getKey(Map<String, HashSet<String>> map, String value) {
    List<String> returnKey = new ArrayList<String>();

    for (String s : map.keySet()) {
        if (map.get(s).contains(value)) {
            returnKey.add(s);
        }
    }

    return returnKey.toString();

}

public static void main(String[] args) {
    // put sth to hMap
    System.out.println(getKey(hMap, "today"));
}
private static HashMap hMap=new HashMap();
公共静态字符串getKey(映射映射,字符串值){
List returnKey=new ArrayList();
对于(字符串s:map.keySet()){
if(map.get.contains(value)){
returnKey.add(s);
}
}
return returnKey.toString();
}
公共静态void main(字符串[]args){
//把某物放到hMap上
System.out.println(getKey(hMap,“今日”);
}

我不允许使用外部库:(@eNetik:那这是家庭作业吗?不管怎样,你都需要更新你的问题以包括这些限制。@eNetik-即使是像Guava libs这样的Apache许可证?它允许商业和非商业开发我不允许使用外部库:(@eNetik:那这是家庭作业吗?不管怎样,你都需要更新你的问题以包含这些限制。@eNetik-即使是像Guava libs这样的Apache许可证?它允许商业和非商业开发,而该方法不接受(map,stringvalue)出于某些原因,它将接受映射中的
V
是什么。根据问题中的代码,即
HashSet
。编译:
Integer key=getKey(new HashMap(),“foo”);
My key是一个字符串,但是..String key=getKey(new HashMap(),“foo”);未编译:/i如果我将K更改为String并在entry.getKey()上强制转换字符串;这行吗?第二个参数表示映射的值。在我的示例中,该值是
字符串
。它们的键是一个
整数
。在您的示例中,该值是一个
哈希集
。我的答案只回答您的第一个问题。返回时,由您在
哈希集
上进行迭代。该方法不起作用t出于某种原因,它将接受映射中的
V
是什么。根据问题中的代码,即
HashSet
。这编译:
Integer key=getKey(new HashMap(),“foo”);
My key是字符串,但是..String key=getKey(new HashMap(),“foo”);未编译:/i如果我将K更改为String并在entry.getKey()上强制转换字符串;这行吗?第二个参数表示映射的值。在我的示例中,该值是
字符串
。它们的键是一个
整数
。在您的示例中,该值是一个
哈希集
。我的答案只回答了您的第一个问题。返回时,由您在
哈希集
上迭代。经验是什么如果多个键映射到同一个值,getKey的ted行为?您似乎隐式地假设映射是内射的(或一对一)。从您的问题和一些评论判断,您似乎在问许多不同的问题。组织您的想法,并在问题中更加具体。如果多个键映射到同一个值,则getKey的预期行为是什么?