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

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

然后我像这样填充它:

team1.put("United", 5);

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


当前回答

这是可行的,至少在理论上,如果你知道索引:

System.out.println(team1.keySet().toArray()[0]);

keySet()返回一个集合,因此您可以将集合转换为一个数组。

当然,问题是一套并不能保证保证你的订单。如果HashMap中只有一个项,那么就很好,但如果有更多项,最好像其他答案那样循环遍历该映射。

其他回答

private Map<String, Integer> _map= new HashMap<String, Integer>();
Iterator<Map.Entry<String,Integer>> itr=  _map.entrySet().iterator();
                //please check 
                while(itr.hasNext())
                {
                    System.out.println("key of : "+itr.next().getKey()+" value of      Map"+itr.next().getValue());
                }

Foreach也可以使用。

team1.forEach((key, value) -> System.out.println(key));

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

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

    return keys[pos];
}

一个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”。

获取Key及其值

e.g

private Map<String, Integer> team1 = new HashMap<String, Integer>();
  team1.put("United", 5);
  team1.put("Barcelona", 6);
    for (String key:team1.keySet()){
                     System.out.println("Key:" + key +" Value:" + team1.get(key)+" Count:"+Collections.frequency(team1, key));// Get Key and value and count
                }

将打印:键:联合值:5 值:6