我寫了這個方法。我不明白爲什麼它寫出此異常:在線程「主要」 java.lang.ClassCastExceptionJava Treemap放置方法
例外:Kocsma.Sör不能轉換爲java.lang.Comparable的
任何人知道我的錯誤是什麼?
編譯器參考這一行
beers.put(啤酒,DL);
這是我的代碼:
private Map<Beer, Integer> beers = new TreeMap<Beer, Integer>();
public void Upload(Beer beer, int dl) {
int d = 0;
Beer s = null;
for (Map.Entry<Beer, Integer> item : beers.entrySet()) {
if (item.getKey().equals(beer)) {
d = item.getValue();
s = item.getKey();
}
}
if (s != null) {
beers.put(s, d + dl);
}else
beers.put(beer, dl); // Here is the problem by the Compiler
}
類Kocsma:
public Kocsma() {
Upload(new Beer("Borsodi sör", 160, 4.6), 1000);
Upload(new Beer("Pilsner Urquell", 250, 4.4), 800);
Upload(new Beer("Soproni Ászok", 150, 4.5), 900);
Upload(new Beer("Dreher Classic", 200, 5.2), 600);
}
是的 - 是的,但我仍然不明白,爲什麼它必須Comparable。因爲它只是一個加法... – blaces
呵呵,導致TreeMap存儲像bst這樣的密鑰? – blaces
@blaces,這是正確的。它使用紅黑樹實現 –