我在Java中有一个这样的Hashmap:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
然后我像这样填充它:
team1.put("United", 5);
我怎么才能拿到钥匙?类似于:team1.getKey()返回“United”。
我在Java中有一个这样的Hashmap:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
然后我像这样填充它:
team1.put("United", 5);
我怎么才能拿到钥匙?类似于:team1.getKey()返回“United”。
当前回答
如果你只是需要一些简单的验证。
public String getKey(String key)
{
if(map.containsKey(key)
{
return key;
}
return null;
}
然后你可以搜索任何键。
System.out.println( "Does this key exist? : " + getKey("United") );
其他回答
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());
}
一个解决方案是,如果你知道键的位置,将键转换为一个String数组,并返回该位置的值:
public String getKey(int pos, Map map) {
String[] keys = (String[]) map.keySet().toArray(new String[0]);
return keys[pos];
}
当你想要获得参数(United)的值(5),你也可以考虑使用双向映射(例如,由Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/BiMap.html提供)。
获取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
这是可行的,至少在理论上,如果你知道索引:
System.out.println(team1.keySet().toArray()[0]);
keySet()返回一个集合,因此您可以将集合转换为一个数组。
当然,问题是一套并不能保证保证你的订单。如果HashMap中只有一个项,那么就很好,但如果有更多项,最好像其他答案那样循环遍历该映射。