首页 > 解决方案 > 数组不会自动对可比较的对象进行排序

问题描述

我有一个带有 3 个双精度值的类框。任务是对其中一个值进行排序并打印结果。下面有一段代码

 public class Box implements Comparable<Box> {

        private double x;
        private double y;
        private double z;
        private double volume;

@Override
    public int compareTo(Box o) {
        return this.x > o.x ? 1 : this.x < o.x ? -1 : 0;
    }

    public static void  sorting (Box[] o)
    {
        System.out.println();
        for (int i = 0; i<o.length; i++)
        {
            System.out.println(o[i].x);
        }
    }

这段代码没有错误,但也没有对 x 参数进行排序。

标签: java

解决方案


仅实现Comparable意味着该类为其实例提供了一些默认顺序。并不意味着每个数组或集合都必须自动应用该 order

例如,String类还实现Comparable了提供字典顺序的功能,但您仍然可以决定您的字符串应该放在数组中的哪个位置。这是可能的,因为当你这样做时

array[index] = element;

决定element将放置在哪里取决于index,而不是任何特性element

要使用其元素的默认顺序对数组进行排序,您可以使用Arrays.sort(o);,否则您的数组o将在索引指定的位置保存元素。


推荐阅读