Hashmap keySet() returns 值而不是键

Hashmap keySet() returns the value instead of the key

这是我的 method.In 散列映射,我有成对的国家 - 首都(俄罗斯 - 莫斯科) Europe.However,它不断返回值(首都)而不是键( country)。我测试了我的 hashmap,它的顺序是正确的。

Map<String, String> europe1 = new HashMap<String, String>()

public String randomCountry(Map theMap)
{
  Random generator = new Random();
  List<String> keys = new ArrayList<String>(theMap.keySet());
  String randomKey = keys.get(generator.nextInt(keys.size()));
  Object theKeyValue = (String )theMap.get(randomKey);

  System.out.println(theKeyValue);
  return (String) theKeyValue;  
}

如果我这样做:

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

我打印了我的国家。

知道为什么我的方法没有按预期工作吗?

您正在获取此处的值:

Object theKeyValue = (String )theMap.get(randomKey);

如果你想要randomCountry到return键,你应该return randomKey而不是theKeyValue

Object theKeyValue = (String )theMap.get(randomKey);

你可以return随机键。

有关 keySet() 的更多详细信息,请查找 HashMap 文档 link:仅 return Key 和 entrySet():return 键值对。

https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html