确定两个双打数组是否具有相同顺序的元素?

时间:2015-03-18 05:00:41

标签: java

我需要知道两个相等长度的双精度数组是否具有相同顺序的元素。我这样做,它似乎工作,但我认为必须有一个更有效的方式。

class Box {
    double a, b;
}

boolean orderIsEqual(double[] a, double[] b) {
    Box[] xa = new Box[a.length]; //always same length
    Box[] xb = new Box[a.length]; //always same length

    for (int i = 0; i < a.length; i++) {
        Box box = new Box();
        box.a = a[i];
        box.b = b[i];
        xa[i] = box;
        xb[i] = box;
    }

    Arrays.sort(xa, new Comparator<Box>() {
        @Override
        public int compare(Box o1, Box o2) {
            if (o1.a > o2.a) return 1;
            if (o1.a < o2.a) return -1;
            return 0;
        }
    });

    Arrays.sort(xb, new Comparator<Box>() {
        @Override
        public int compare(Box o1, Box o2) {
            if (o1.b > o2.b) return 1;
            if (o1.b < o2.b) return -1;
            return 0;
        }
    });

    return Arrays.equals(xa, xb);//was deepEquals() - unnecessary
}

1 个答案:

答案 0 :(得分:1)

虽然我认为这个问题有一些隐藏的问题......

  • 你的任务似乎完全没有必要的盒子
  • 您的示例中的两个框数组(xa,xb)默认相同,因为您将相同的内容放入其中

...如果您只想检查双数组,那么Arrays.equals(a, b)有什么问题?如果该方法返回false,则您知道数组a,b不包含相同的元素或不是相同的顺序。