反向查找地圖是Map<Integer,List<String>>
。一旦創建,找到具有給定int值的所有字符串很容易。
import java.util.Arrays;
import java.util.Iterator;
import java.util.Set;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
<P>{@code java MapAndReverseMapXmpl}</P>
**/
public class MapAndReverseMapXmpl {
public static void main(String []args) {
HashMap<String,Integer> hmS2I = new HashMap<String,Integer>();
HashMap<Integer,List<String>> hmI2S = new HashMap<Integer,List<String>>();
addItem(hmS2I, hmI2S, "ansh",1);
addItem(hmS2I, hmI2S, "ansh2",2);
addItem(hmS2I, hmI2S, "ansh3",3);
addItem(hmS2I, hmI2S, "ansh4",1);
addItem(hmS2I, hmI2S, "ansh5",1);
System.out.println("string-to-int:");
Set<String> stStrKeys = hmS2I.keySet();
Iterator<String> itrs = stStrKeys.iterator();
while(itrs.hasNext()) {
String s = itrs.next();
System.out.println(s + ": " + hmS2I.get(s));
}
System.out.println();
System.out.println("int-to-string:");
Set<Integer> stIntKeys = hmI2S.keySet();
Iterator<Integer> itri = stIntKeys.iterator();
while(itri.hasNext()) {
Integer I = itri.next();
System.out.println(I + ": " + Arrays.toString(hmI2S.get(I).toArray()));
}
System.out.println();
}
private static final void addItem(HashMap<String,Integer> hm_strToInt, HashMap<Integer,List<String>> hm_intToStr, String s_text, int i_num) {
hm_strToInt.put(s_text, i_num);
if(hm_intToStr.containsKey(i_num)) {
hm_intToStr.get(i_num).add(s_text);
} else {
ArrayList<String> als = new ArrayList<String>(5);
als.add(s_text);
hm_intToStr.put(i_num, als);
}
}
}
輸出:
[C:\java_code\]java MapAndReverseMapXmpl
string-to-int:
ansh3: 3
ansh2: 2
ansh5: 1
ansh: 1
ansh4: 1
int-to-string:
1: [ansh, ansh4, ansh5]
2: [ansh2]
3: [ansh3]
你不能。但是您可以保留兩張地圖 - 第二張地圖用於反向查找 – Bohemian
可以考慮針對界面(地圖)執行並防止原始類型。 –