2

重複の可能性:
Java Hashmap: 値からキーを取得する方法は?

私はハッシュマップを持っています

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

そして、UUIDに対応するObjectClassを返したい未完成のメソッド

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

}
4

5 に答える 5

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を繰り返し、各キーを取得します

于 2013-01-16T05:22:27.480 に答える
2

「Javaには逆ルックアップを備えたHashMapがありますか?」でgetKey説明されているように、値からキーへのルックアップをサポートする双方向ハッシュマップが必要なようなメソッドを取得するには。。Apache Commons(BiDiMap)またはGuava(BiMap)がこの機能を提供しているようです。

あるいは、Amithが提唱する反復的なアプローチをとることもできます。

于 2013-01-16T05:26:56.233 に答える
1

親愛なる友人へ、あなたのコードには問題があります。値として一意の ID がある場合、この ID をハッシュマップ キーとして使用でき、複雑なコーディングを行う必要はありません。これを行うだけです:

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

その後:

projectileSet.get(uniqueId);
于 2013-01-16T05:33:34.550 に答える
0

その機能を標準のJavaマップで直接取得することはできません。Javaマップは逆ビューをサポートしていないため、指定された値からキーを取得します。そのためには、双方向マップの実装を使用することをお勧めします。例の1つ:BiMap

于 2013-01-16T05:28:08.650 に答える
0

あなたができることを使用することによってkeySet()...それはセットの形ですべてのキーを返します...

于 2013-01-16T05:28:53.340 に答える