Я пробовал делать пользовательские заказы в моей TreeMap в зависимости от длины строки. Почему я получаю только один ключ, если длина строки такая же, несмотря на то, что она имеет разные строки.Почему я получаю только один ключ в наборе ключей при перегрузке Comparable в TreeMap в Java
Как исправить это и каковы последствия для equomet meth0d, будет ли он когда-либо использоваться или будет сравнивать, чтобы занять его место.
Код:
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class Student implements Comparable {
int RollNo;
String Name;
public Student(int RollNo, String Name) {
this.RollNo = RollNo;
this.Name = Name;
}
public int compareTo(Object arg0) {
Student str = (Student) arg0;
return Integer.valueOf(str.Name.length()).compareTo(Integer.valueOf(this.Name.length()));
}
public static void main(String[] args) {
Map<Student, Integer> mp = new TreeMap<Student, Integer>();
mp.put(new Student(1, "Sameer"), 1);
mp.put(new Student(2, "Aameer"), 2);
for(Student st : mp.keySet()){
System.out.println((st.Name));
}
}
}
КСТАТИ: 'compareTo' может быть wriiten как' вернуть str.Name.length() - this.Name.length(); '. – PeterMmm