我在Java中有一个这样的Hashmap:

private Map<String, Integer> team1 = new HashMap<String, Integer>();

然后我像这样填充它:

team1.put("United", 5);

我怎么才能拿到钥匙?类似于:team1.getKey()返回“United”。


当前回答

您可以使用keySet()方法检索Map的所有键。现在,如果你需要的是一个给定值的键,那就完全是另一回事了Map不会帮你;你需要一个专门的数据结构,像来自Apache的公共集合的bidmap(一个允许键和值之间双向查找的映射)-还要注意几个不同的键可以映射到相同的值。

其他回答

一个解决方案是,如果你知道键的位置,将键转换为一个String数组,并返回该位置的值:

public String getKey(int pos, Map map) {
    String[] keys = (String[]) map.keySet().toArray(new String[0]);

    return keys[pos];
}
public class MyHashMapKeys {

    public static void main(String a[]){
        HashMap<String, String> hm = new HashMap<String, String>();
        //add key-value pair to hashmap
        hm.put("first", "FIRST INSERTED");
        hm.put("second", "SECOND INSERTED");
        hm.put("third","THIRD INSERTED");
        System.out.println(hm);
        Set<String> keys = hm.keySet();
        for(String key: keys){
            System.out.println(key);
        }
    }
}

使用函数式操作来实现更快的迭代。

team1.keySet().forEach((key) -> {
      System.out.println(key);
});

一个HashMap包含多个键。您可以使用keySet()来获取所有键的集合。

team1.put("foo", 1);
team1.put("bar", 2);

将存储1,键“foo”和2,键“bar”。遍历所有键:

for ( String key : team1.keySet() ) {
    System.out.println( key );
}

将打印“foo”和“bar”。

您可以使用keySet()方法检索Map的所有键。现在,如果你需要的是一个给定值的键,那就完全是另一回事了Map不会帮你;你需要一个专门的数据结构,像来自Apache的公共集合的bidmap(一个允许键和值之间双向查找的映射)-还要注意几个不同的键可以映射到相同的值。