オブジェクトの配列があります。各オブジェクトが Grid 型であるとしましょう。
各 Grid オブジェクトには x 座標と y 座標があり、
Grid temp = new Grid(3, 5);
// temp.x returns x, temp.y returns y.
今、私はグリッドのいくつかの配列を持っています
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 を並べ替えたいと思います。
どうすればこれを達成できますか?また、同じ結果を達成するためのより簡単な方法があれば、それは素晴らしいことです。しかし、for ループの反復によって取得されるため、3 つの配列から始める必要があります。
編集:
例: X 座標で並べ替え、小さい方から並べるとします。簡単にするために、各 Grid[] の長さを 5 ではなく 3 にします。
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 座標が最小の要素が最初に、次に 2 番目に小さく、次に最大になるようにします。
次に、これらの配列をそれぞれの最初の要素のサイズで並べます。最初の要素の x 座標は 1 ですが、theArray2 では 3 であるため、theArray3 は theArray2 の前に配置されます。