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

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

然后我像这样填充它:

team1.put("United", 5);

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


当前回答

要在HashMap中获取键,我们有keySet()方法,该方法存在于java.util.Hashmap包中。 例:

Map<String,String> map = new Hashmap<String,String>();
map.put("key1","value1");
map.put("key2","value2");

// Now to get keys we can use keySet() on map object
Set<String> keys = map.keySet();

现在键将有你所有的键在地图可用。 例:[key1, key2]

其他回答

当你想要获得参数(United)的值(5),你也可以考虑使用双向映射(例如,由Guava: http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/BiMap.html提供)。

您可以使用keySet()方法检索Map的所有键。现在,如果你需要的是一个给定值的键,那就完全是另一回事了Map不会帮你;你需要一个专门的数据结构,像来自Apache的公共集合的bidmap(一个允许键和值之间双向查找的映射)-还要注意几个不同的键可以映射到相同的值。

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

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

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

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

要在HashMap中获取键,我们有keySet()方法,该方法存在于java.util.Hashmap包中。 例:

Map<String,String> map = new Hashmap<String,String>();
map.put("key1","value1");
map.put("key2","value2");

// Now to get keys we can use keySet() on map object
Set<String> keys = map.keySet();

现在键将有你所有的键在地图可用。 例:[key1, key2]

我要做的非常简单,但浪费内存的是将值映射到一个键,并相反地将键映射到一个值,这样做:

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

使用<Object, Object>很重要,这样你就可以像这样映射key:Value和Value: key

team1。(“联合”,5);

team1。把(5,“联合”);

如果你使用team1。get("United") = 5和team1。get(5) = "United"

但如果你对其中一个对象使用特定的方法,我会更好,如果你做另一张地图:

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

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

然后

team1。(“联合”,5);

team1Keys。把(5,“联合”);

记住,保持简单。