Ваш compare
метод не является симметричным - он всегда либо возвращает 1 или 0.
Вместо этого просто делегируйте Integer.compare
(если он доступен в версии Javaвы используете), передавая баллы:
public int compare(String o1, String o2) {
scoreWord sc1 = new scoreWord((String)o1);
scoreWord sc2 = new scoreWord((String)o2);
return Integer.compare(i1, i2);
}
В противном случае сделайте это вручную, что, откровенно говоря, является болью - если вам это нужно в нескольких местах, я предлагаю вам написать свою собственную реализациюInteger.compare
, чтобы избежать повторения:
public int compare(String o1, String o2) {
scoreWord sc1 = new scoreWord((String)o1);
scoreWord sc2 = new scoreWord((String)o2);
return i1 > i2 ? 1
: i1 < i2 ? -1
: 0;
}
Таким образом, вы получите соответствующую симметрию:
a.compareTo(b) < 0
подразумевает b.compareTo(a) > 0
a.compareTo(b) > 0
подразумевает b.compareTo(a) < 0
a.compareTo(b) == 0
подразумевает b.compareTo(a) == 0