这是我的方法。在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 ); }
我打印了我的国家/地区。
为什么我的方法不能按预期工作的任何想法?
答案 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