web-dev-qa-db-ja.com

値を使用してHashMapからキーを取得します

値を使用してHashMapのキーを取得したい。

hashmap = new HashMap<String, Object>();

haspmap.put("one", 100);
haspmap.put("two", 200);

つまり、値100を取り、文字列1を返す関数が必要です。

ここには同じことを尋ねる質問がたくさんあるようですが、私にはうまくいきません。

たぶん、私はJavaが初めてなので。

どうやってするの?

26
kechapito

HashMapのputメソッドは次のように定義されます。

_Object  put(Object key, Object value) 
_

キーは最初のパラメーターであるため、「1」がキーになります。 HashMapの値で簡単に検索することはできません。本当に実行したい場合は、次のようにentrySet()を呼び出して線形検索を実行します。

_for (Map.Entry<Object, Object> e : hashmap.entrySet()) {
    Object key = e.getKey();
    Object value = e.getValue();
}
_

ただし、これはO(n)であり、まれにしか実行する必要がない限り、HashMapを使用する目的を無効にします。キーまたは値で頻繁に検索できるようにする場合、コアJavaには何もありませんが、GoogleコレクションのBiMapのようなものが必要です。

62
kbyrd

KEYからVALUEを取得できます。以下はサンプルcode_です

 public class Main {
  public static void main(String[] args) {
    Map map = new HashMap();
    map.put("key_1","one");
    map.put("key_2","two");
    map.put("key_3","three");
    map.put("key_4","four");
System.out.println(getKeyFromValue(map,"four")); } public static Object getKeyFromValue(Map hm, Object value) { for (Object o : hm.keySet()) { if (hm.get(o).equals(value)) { return o; } } return null; } }

これが皆さんの役に立つことを願っています。

25
Rupesh Yadav
  • onlyのみが必要な場合は、単にput(100, "one")を使用します。キーが最初の引数であり、値が2番目であることに注意してください。
  • キーと値の両方を取得できるようにする必要がある場合は、 BiMap (グアバから)を使用します
5
Bozho

キーと値を混合しました。

Hashmap <Integer,String> hashmap = new HashMap<Integer, String>();

hashmap.put(100, "one");
hashmap.put(200, "two");

その後

hashmap.get(100);

あなたに「1」を与えます

5
Udo Held

あなたはそれを逆にしています。 100が最初のパラメーター(キー)であり、「1」が2番目のパラメーター(値)である必要があります。

HashMapのjavadocを読むと、役に立つかもしれません: HashMap

値を取得するには、hashmap.get(100)を使用します。

4
AHungerArtist
public class Class1 {
private String extref="MY";

public String getExtref() {
    return extref;
}

public String setExtref(String extref) {
    return this.extref = extref;
}

public static void main(String[] args) {

    Class1 obj=new Class1();
    String value=obj.setExtref("AFF");
    int returnedValue=getMethod(value);     
    System.out.println(returnedValue);
}

/**
 * @param value
 * @return
 */
private static int getMethod(String value) {
      HashMap<Integer, String> hashmap1 = new HashMap<Integer, String>();
        hashmap1.put(1,"MY");
        hashmap1.put(2,"AFF");

        if (hashmap1.containsValue(value))
        {
            for (Map.Entry<Integer,String> e : hashmap1.entrySet()) {
                Integer key = e.getKey();
                Object value2 = e.getValue();
                if ((value2.toString()).equalsIgnoreCase(value))
                {
                    return key;
                }
            }
        }   
        return 0;

}
}
1
user3510015

あなたが100を与えることによって「1」を取得する場合

ハッシュマップを初期化する

hashmap = new HashMap<Object,String>();

haspmap.put(100,"one");

hashMap.get(100)で値を取得します

それが役立つことを願っています。

0
Kaushal Singh

Hashmapを使用する必要がない場合は、pair <T、T>を使用することをお勧めします。個々の要素には、firstおよびsecond呼び出しでアクセスできます。

これを見てください http://www.cplusplus.com/reference/utility/pair/

ここで使用しました: http://codeforces.com/contest/507/submission/953194

0
pukingminion