У меня есть следующий код java-коллекции.Метод CompareTo() дает разные результаты в версиях java differnt
Основная тема заключается в том, что сортировка объектов «Сотрудник» на основе их идентификаторов, , но у меня есть одна проблема здесь, написав метод «Collections.sort()». Когда «jvm» выполняет «Collections.sort (al)»,
java 1.6 дает результат как 50 и 60 в методе compareTo(), т.е. вызывает e1.compareTo (e2).
тогда как в java 1.7 дает результат как 60 и 50 в методе compareTo(), то есть он вызывает e2.compareTo (e1).
Что на самом деле «это» означает, что e1 или e2. В чем проблема. Является ли «Jvm» вызовом «e2.compareTo (e1)» в
в java1.7 и «e1.compareTo (e2)» в java1.6?
class Employee implements Comparable<Employee>
{
int eid;String name;
Employee(String name,int eid){
this.name=name;
this.eid=eid;
}
public int compareTo(Employee e)
{
int eid1=this.eid;
int eid2=e.eid;
System.out.println(eid1);
System.out.println(eid2);
System.out.println("-------------");
if(eid1<eid2)
return -1;
if(eid1>eid2)
return +1;
else
return 0;
}}
public class ForEmployee {
public static void main(String[] args)
{
Employee e1=new Employee("raja",50);
Employee e2=new Employee("rani",60);
ArrayList<Employee> al=new ArrayList<Employee>();
boolean a=al.add(e1);
boolean b=al.add(e2);
Collections.sort(al);
}}
Почему это проблема? Инкапсуляция здесь, чтобы вы не беспокоились о том, как сортировка действительно выполняется. –
Алгоритм сортировки может быть реализован по-разному (это на самом деле!) На разных версиях Java. Но это не имеет значения, нет гарантии, в каком порядке этот метод называется. – qqilihq
@dystroy: Если я знаю, действительно ли он вызывает e2.compareTo (e1) или e1.compareTo (e2), то только я могу записать оставшийся код. – reddy