我有一个hashmap
private static HashMap<ObjectClass, UUID> projectileSet = new HashMap<ObjectClass, UUID>();
和一个未完成的方法,我想返回对应于UUID
的ObjectClasspublic static LegendaryItem getClass(UUID uniqueId) {
return projectileSet.getKey(uniqueId);
}
答案 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 ...