Hashmap keySet()返回值而不是键

时间:2015-11-04 13:34:26

标签: java hashmap keyset

这是我的方法。在hashmap中,我有一对国家 - 资本(俄罗斯 - 莫斯科)为欧洲。然而,它不断返回我的价值(资本)而不是关键(国家)。我测试了我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 ); }

我打印了我的国家/地区。

为什么我的方法不能按预期工作的任何想法?

2 个答案:

答案 0 :(得分:2)

您在此处获取值:

    ID      Date    Op  SS  type ID     Date    Op  SS  type  ID    Date    Op  SS  type
1   AR02    03-14   NA  SS  ET   AR02   03-14   NA  SS  ET    AR02  06-14   NA  SS  ET  
2   AR03    31-14   NA  SS  ET   NA     NA      NA  NA  NA    NA    NA      NA  NA  NA  
3   AR08    03-14   NA  SS  ET   NA     NA      NA  NA  NA    NA    NA      NA  NA  NA  
4   AR09    03-14   NA  SS  EN   NA     NA      NA  NA  NA    NA    NA      NA  NA  NA

如果您希望Object theKeyValue = (String )theMap.get(randomKey); 返回密钥,则应返回randomCountry而不是randomKey

答案 1 :(得分:0)

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

你可以返回randomKey。

有关keySet()的更多详细信息,请参阅HashMap文档链接:仅返回Key和entrySet():以返回键值对。

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