如果這些都是固定的一組鍵值對音符,那麼你可以考慮使用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