我有一个对象数组,假设每个对象都是网格类型。
每个 Grid 对象都有 x 和 y 坐标,
Grid temp = new Grid(3, 5);
// temp.x returns x, temp.y returns y.
现在我有几个 Grid 数组
Grid[] theArray1 = new Grid[5];
Grid[] theArray2 = new Grid[5];
Grid[] theArray3 = new Grid[5];
我用 Grid 对象填充数组并使用 Arrays.sort 对它们进行排序。
我现在加入已排序的数组以形成长度为 5+5+5=15 的数组。
我现在想按“子数组”的第一个元素(theArray 中的元素 0、5 和 10)对 theArray 进行排序
我怎么能做到这一点?此外,如果有更简单的方法可以达到相同的结果,那就太好了。但我必须从 3 个数组开始,因为它们是通过 for 循环的迭代获得的。
编辑:
示例:假设我按 X 协调排序,先小一点。为简单起见,我将每个 Grid[] 长度设为 3 而不是 5。
Grid[] theArray1 = new Grid[]{new Grid(2, 1), new Grid(4, 1), new Grid(0, 1)};
Grid[] theArray2 = new Grid[]{new Grid(4, 2), new Grid(3, 1), new Grid(7, 1)};
Grid[] theArray3 = new Grid[]{new Grid(1, 7), new Grid(5, 3), new Grid(10, 1)};
我想要结束的是一个数组/数组列表,当打印时,打印如下:
for (int i = 0; i <= theArray.length-2; i++) {
StdOut.println(theArray[i] + ", " + theArray[i+1] + ", " + theArray[i+2] + "\n");
}
// Output:
(0, 1), (2, 1), (4, 1) //this is theArray1
(1, 7), (5, 3), (10, 1) //this is theArray3
(3, 1), (4, 2), (7, 1) //this is theArray2
首先,我对每个 theArray(1, 2 和 3) 进行排序,使 x 坐标最低的元素排在第一位,然后是第二小,然后是最大的。
然后我按照每个数组的第一个元素的大小排列这些数组。theArray3 在 theArray2 之前,因为第一个元素的 x 坐标是 1 但在 theArray2 中是 3