如何从 java 中的 HashMap 中的指定值 return 键?

How to return key from specified value in HashMap in java?

我希望我的 getLicense 方法检查 streamName 值是否已存在于我的 HashMap streamMap 中,如果不存在,我将生成一个随机十六进制并将其分配给 HashMap 中的 streamName。如果它已经存在,我想从 HashMap 中显示值 streamName 的键。

这是哈希映射示例:

{
    "2bd64e11d9b990eb4e02f7a1eebbd69e": "test68",
    "250d11594843674da1e3a742c12ba2b8": "test67",
    "dde270212efe372277d1abf57d393947": "test66"
}

这是方法:

static HashMap<String, String> streamMap = new HashMap<String, String>();

@GetMapping("/getLicense")
@ResponseBody
public String addStream(@RequestParam("streamName") String streamName) {

    if(streamMap.containsValue(streamName)==false){
        String key = getRandomHexString();
        streamMap.put(key, streamName);
        streamService.addStream(new Stream(streamName, key));
        return key;
    }else{

 //here I would like for test67 return only m250d11594843674da1e3a742c12ba2b8

    }
}

您可以只使用一个简单的 for each 循环来找到键对应的值:

static HashMap<String, String> streamMap = new HashMap<String, String>();

@GetMapping("/getLicense")
@ResponseBody
public String addStream(@RequestParam("streamName") String streamName) {
    if(streamMap.containsValue(streamName)==false){
        String key = getRandomHexString();
        streamMap.put(key, streamName);
        streamService.addStream(new Stream(streamName, key));
        return key;
    }
    else{
        for (Entry<String, String> entry : streamMap.entrySet()) {
            if (entry.getValue().equals(streamName)) {
                return(entry.getKey());
            }
        }
    }
}