gpt4 book ai didi

java - java中对象的排序

转载 作者:行者123 更新时间:2023-12-01 06:58:25 24 4
gpt4 key购买 nike

有没有办法对java中的对象进行排序?我不想实现类似的接口(interface)或任何其他排序算法。

最佳答案

如果不(至少)使用排序算法,就无法对事物进行排序。

您也无法对任意对象进行排序,因为Java没有提供适用于任意对象的可靠排序。 (见下文。)

但是,如果您的对象是支持Comparable的类的实例...或者您可以实现Comparator,那么您可以排序他们,使用:

   Arrays.sort<T>(T[], Comparator<T>) 

   Arrays.sort<T extends Comparable>(T[]) 

简而言之,您必须实现Comparable或提供Comparator。但如果您这样做,Java 类库提供了一个很好的通用排序算法可供您使用。

<小时/>

比较不可比较对象的两种明显方法行不通:

  • 您可以比较它们的 toString() 方法的结果。但是,并不能保证

    a.toString().equals(b.toString())  IMPLIES  a.equals(b)
  • 您可以比较它们的 hashCode 或身份 hashCode,但 hashcode 相等并不意味着对象相等。

理论上可以使用反射来访问对象的所有字段,提取它们的值并以某种可预测的顺序比较它们以给出排序。这可能可行,但您最终会得到一个计算成本高昂、没有多大意义的排序,并且(如果您不小心的话)与 equals(Object) 不一致。所以这听起来是个坏主意。

关于java - java中对象的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5593134/

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