Java | 配列比較メソッド

Java Java
スポンサーリンク

「ソートして比較」や「コピーしてから操作」を組み合わせると、配列の比較を自分の意図に合わせて柔軟にできます。初心者向けに整理するとこんな感じです。


なぜ「ソート」や「コピー」を使うのか

  • ソートして比較
    → 順番を無視して「同じ要素が入っているか」だけを確認したいときに便利。
  • コピーしてから操作
    → 元の配列を壊さずに比較用の加工(ソートなど)ができる。

実例で理解

例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

👉 元の teamAteamB は順番が違うけど、ソートしてから比較すると「同じメンバー」と判定できる。


例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 / ソート / コピーを組み合わせると、意図通りの判定ができます。

Java
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました