我得充滿整數列表:的Java:比較整形神祕
List collection = new ArrayList();
collection.add(this.score1);
collection.add(this.score2);
collection.add(this.score3);
現在我想比較每個個人得分最高分,看看哪一個(或多個)是最高的。直覺上我試圖做到這一點,像這樣:
String highestScore;
if(Collections.max(collection) == this.score1) {
highestScore = "Score 1";
}
if(Collections.max(collection) == this.score2) {
highestScore += ", Score 2";
}
if(Collections.max(collection) == this.score3) {
highestScore += ", Score 3";
}
然而,
Collections.max(collection) == this.score1
Collections.max(collection) == this.score2
Collections.max(collection) == this.score3
所有給我的錯誤:
Incompatible operand types Comparable and int
然而,這似乎工作:
int highestScoreValue = Collections.max(collection);
現在怎麼可能?
爲什麼Java允許將int設置爲Collections.max(collection)
,但是不允許將int與Collections.max(collection)
進行比較?使用equals()
用於比較
'List collection = new ArrayList <>();'可能會工作。正如所聲明的,你的列表是一個'列表
看起來像'int highestScoreValue = Collections.max(集合);'編譯器可以使用LHS上的聲明來推斷返回類型。所以,在這種情況下,max方法返回一個'Integer'(然後自動拆箱)而不是'Comparable'。 –
請勿使用原始類型。採取assylias的建議並聲明您的收藏的參數化類型。 –