gpt4 book ai didi

java - CompareTo() 方法在不同的 Java 版本中给出不同的结果

转载 作者:行者123 更新时间:2023-11-29 03:24:14 25 4
gpt4 key购买 nike

我有以下 java 集合代码。

主题是根据 ID 对“Employee”对象进行排序, 但是我在编写“Collections.sort()”方法时遇到了一个问题。 当“jvm”执行“Collections.sort(al)”时,
java 1.6 在 compareTo() 方法中给出结果为 50 和 60,即它调用 e1.compareTo(e2)。
而在 Java 1.7 中,compareTo() 方法给出的结果为 60 和 50,即它调用 e2.compareTo(e1).
无论是 e1 还是 e2,“this”的实际含义是什么。 实际问题是什么。 “Jvm”是否在
中调用“e2.compareTo(e1)” 在 java1.7 中和 java1.6 中的“e1.compareTo(e2)”?

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 6 和 7 之间发生了变化,所以这就是为什么您会看到以不同顺序调用方法的原因。无论如何,您不应该依赖排序中的任何序列,因此如果您对此有疑问,您应该在代码中修复该依赖性。

关于java - CompareTo() 方法在不同的 Java 版本中给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com