値を使用してHashMapのキーを取得したい。
hashmap = new HashMap<String, Object>();
haspmap.put("one", 100);
haspmap.put("two", 200);
つまり、値100を取り、文字列1を返す関数が必要です。
ここには同じことを尋ねる質問がたくさんあるようですが、私にはうまくいきません。
たぶん、私はJavaが初めてなので。
どうやってするの?
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のようなものが必要です。
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;
}
}
これが皆さんの役に立つことを願っています。
put(100, "one")
を使用します。キーが最初の引数であり、値が2番目であることに注意してください。BiMap
(グアバから)を使用しますキーと値を混合しました。
Hashmap <Integer,String> hashmap = new HashMap<Integer, String>();
hashmap.put(100, "one");
hashmap.put(200, "two");
その後
hashmap.get(100);
あなたに「1」を与えます
あなたはそれを逆にしています。 100が最初のパラメーター(キー)であり、「1」が2番目のパラメーター(値)である必要があります。
HashMapのjavadocを読むと、役に立つかもしれません: HashMap
値を取得するには、hashmap.get(100)
を使用します。
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;
}
}
あなたが100を与えることによって「1」を取得する場合
ハッシュマップを初期化する
hashmap = new HashMap<Object,String>();
haspmap.put(100,"one");
hashMap.get(100)
で値を取得します
それが役立つことを願っています。
Hashmapを使用する必要がない場合は、pair <T、T>を使用することをお勧めします。個々の要素には、firstおよびsecond呼び出しでアクセスできます。
これを見てください http://www.cplusplus.com/reference/utility/pair/
ここで使用しました: http://codeforces.com/contest/507/submission/953194