Я работаю над некоторыми примерами для изучения Java, и мне кажется, что я не могу использовать Collections.sort
для сортировки своего списка. В настоящее время мои коды следующие:
// Person class in package application.domain
package application.domain;
public class Person implements Identifiable, Comparable<Identifiable> {
private String name;
private String id;
// ...Constructor...
// ...Accessors for getName and getPersonID...
@Override // from interface "Identifiable"
public String getID(){
return getPersonID();
}
public int compareTo(Identifiable another) {
return this.getID().compareTo(another.getID());
}
//... toString ...
}
// Register class implementation
package application.domain;
import java.util.*;
public class Register {
private HashMap<String, Identifiable> registered;
// ...Constructor - initialize hashmap ...
public void add(Identifiable toBeAdded){
this.registered.put(toBeAdded.getID(), toBeAdded);
}
// get
public Identifiable get(String id){ return this.registered.get(id); }
// getAll - must be generalized to work
public List<Identifiable> getAll(){
return new ArrayList<Identifiable>(registered.values());
}
// sortAndGetEverything (ERROR)
public List<Identifiable> sortAndGetEverything(){
List<Identifiable> all = new ArrayList<Identifiable>(registered.values());
Collections.sort(all); // <- part of code that gives an error
return all;
}
}
со следующим выводом:
![enter image description here](https://i.stack.imgur.com/nZlGv.png)
* Обратите внимание, что комментарии с эллипсамииспользуются для сокращения нерелевантных частей
Я подозреваю, что у класса Person toCompare
может быть проблема, поскольку он сравнивает строку ... однако я посмотрел его в Интернете, и кажется, что сравнение двух разныхстроки действительны с .compareTo
методом. Я попытался преобразовать ArrayList в список и все еще с той же ошибкой. Я не в курсе, поэтому я не хотел бы, если у кого-нибудь есть предложения по исправлению этого. Заранее спасибо.