如何从地图中的对象中查找键?

时间:2019-12-16 09:23:12

标签: java

基本上,我有以下代码:

Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "test");
map.put(2, "test2");
// I can get the string using this:
String str = map.get("test2");
// but how do I get the index ('key') of "test2"?

代码几乎可以自我解释。如何获得“ 2”?使用循环是否必不可少?

2 个答案:

答案 0 :(得分:2)

除了使用循环之外,您还可以使用Stream s来找到与给定值匹配的键:

map.entrySet()
   .stream() // build a Stream<Map.Entry<Integer,String> of all the map entries
   .filter(e -> e.getValue().equals("test2")) // locate entries having the required value
   .map(Map.Entry::getKey) // map to the corresponding key
   .findFirst() // get the first match (there may be multiple matches)
   .orElse(null); // default value in case of no match

答案 1 :(得分:0)

您可以遍历地图条目,并检查key是否与匹配的value相匹配。

    int key = 0;
    for(Entry<Integer, String> entry:map.entrySet()) {
        if(entry.getValue().equals("test2")) {
            key=entry.getKey();
            break;
        }
    }
    System.out.println(key);

    // Using stream
    Optional<Entry<Integer, String>> element = map.entrySet().stream().filter(elem->elem.getValue().equals("test2")).findFirst();
    if(element.isPresent()) {
        System.out.println(element.get().getKey());
    }