「ソートして比較」や「コピーしてから操作」を組み合わせると、配列の比較を自分の意図に合わせて柔軟にできます。初心者向けに整理するとこんな感じです。
なぜ「ソート」や「コピー」を使うのか
- ソートして比較
→ 順番を無視して「同じ要素が入っているか」だけを確認したいときに便利。 - コピーしてから操作
→ 元の配列を壊さずに比較用の加工(ソートなど)ができる。
実例で理解
例1: 順番を無視して比較したい
import java.util.Arrays;
public class CompareExample {
public static void main(String[] args) {
int[] teamA = {3, 1, 5, 2};
int[] teamB = {2, 5, 3, 1};
// コピーを作ってソート
int[] copyA = Arrays.copyOf(teamA, teamA.length);
int[] copyB = Arrays.copyOf(teamB, teamB.length);
Arrays.sort(copyA);
Arrays.sort(copyB);
System.out.println(Arrays.equals(copyA, copyB)); // true
}
}
Java👉 元の teamA と teamB は順番が違うけど、ソートしてから比較すると「同じメンバー」と判定できる。
例2: 元の配列を壊さない工夫
int[] scores = {90, 70, 80};
// ソートすると元の配列が並び替えられてしまう
Arrays.sort(scores);
System.out.println(Arrays.toString(scores)); // [70, 80, 90]
// 元を残したいならコピーしてからソート
int[] copyScores = Arrays.copyOf(scores, scores.length);
Arrays.sort(copyScores);
System.out.println(Arrays.toString(copyScores)); // [70, 80, 90]
System.out.println(Arrays.toString(scores)); // [90, 70, 80] (元はそのまま)
Java👉 コピーを使うことで「比較用」と「元データ」を分けられる。
✅ まとめ
- 順番も含めて比較 →
Arrays.equals - 順番を無視して比較 → コピーしてソートしてから
Arrays.equals - 多次元配列 →
Arrays.deepEquals
つまり「どういう比較をしたいか」を考えて、equals / deepEquals / ソート / コピーを組み合わせると、意図通りの判定ができます。
