如何在HashMap中获取特定值的密钥?

时间:2013-01-16 05:18:25

标签: java hashmap

  

可能重复:
  Java Hashmap: How to get key from value?

我有一个hashmap

private static HashMap<ObjectClass, UUID> projectileSet = new HashMap<ObjectClass, UUID>();

和一个未完成的方法,我想返回对应于UUID

的ObjectClass
public static LegendaryItem getClass(UUID uniqueId) {
    return projectileSet.getKey(uniqueId);

}

5 个答案:

答案 0 :(得分:3)

您可以使用“KeySet()”方法从HashMap返回密钥。

HashMap objH=new HashMap<>();
Set objSet=objH.keySet();
public static LegendaryItem getClass(UUID uniqueId) {
    Iterator objItr=objSet.iterator();
    while(objItr.hasNext()){
        UUID objStr=(UUID) objItr.next();
        if(objStr.equals(uniqueId)){
            return objStr;
        }
    }
}

迭代ObjSet并获取每个键

答案 1 :(得分:2)

要获得getKey这样的方法,您需要一个双向哈希映射,它支持从值到键的查找,如Does Java have a HashMap with reverse lookup?中所述。 Apache Commons(BiDiMap)或Guava(BiMap)似乎提供此功能。

或者你可以采用Amith提出的迭代方法。

答案 2 :(得分:1)

亲爱的朋友,您的代码中存在问题。 当您将唯一ID作为值时,可以将此ID用作hashmap键,而不必进行任何复杂的编码。就这样做:

private static HashMap<UUID, ObjectClass> projectileSet = new HashMap<UUID, ObjectClass>();

然后:

projectileSet.get(uniqueId);

答案 3 :(得分:0)

您无法直接在标准Java地图中获取该功能。因为java map不支持反向视图,所以从给定值获取键。为此,最好使用双向映射实现。其中一个例子:BiMap

答案 4 :(得分:0)

使用keySet()你可以......它会以set ...

的形式返回所有键