如果这些都是固定的一组键值对音符,那么你可以考虑使用enum
与反向查找地图。你仍然会得到两个HashMaps,但是至少它们在枚举中连接在一起。
enum Note {
C("C",60), CSHARP("C#",61), D("D",62), DSHARP("D#",63); //etc..
final int value;
final String symbol;
static final Map<Integer, Note> lookup = new HashMap<Integer, Note>();
static {
for(Note n : Note.values()) {
lookup.put(n.value, n);
}
}
Note(String symbol, int value) {
this.symbol = symbol;
this.value = value;
}
static Note get(int i) {
return lookup.get(i);
}
}
然后得到的值和符号,用这个
System.out.println(Note.get(61));
System.out.println(Note.get(61).symbol);
System.out.println(Note.CSHARP.value);
System.out.println(Note.CSHARP.symbol);
这将导致以
CSHARP
C#
61
C#
PS。为简洁起见,删除修饰符。 PSS。为符号添加其他查找映射。
是否每个号有一个相关的价值? – 2010-10-28 03:07:38
从12到107的数字每个都与一个字符串相关联 – Frank 2010-10-28 03:09:52
“jdk1.6中没有任何内容会执行此操作?”不。 – Thilo 2010-10-28 03:27:32