0Pricing
Java Academy · レッスン

Arrays.equals と toString

配列を比較して出力します。

「Arrays.equals と toString」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

比較と出力

配列は、equalsやtoStringを内容の比較や表示に適した形ではオーバーライドしていません。ユーティリティクラスであるArraysには、要素の内容を実際に調べるequalsとtoStringが用意されています。

==では比較できない理由

配列に==を使うと、内容ではなく参照が比較されます。同じ要素を持つ別々の配列は、==では等しくありません。

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(a == b);
    }
}

Arrays.equals

Arrays.equals(a, b)は、両方の配列の長さが同じで、同じ位置の要素が等しい場合にtrueを返します。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(Arrays.equals(a, b));
    }
}

順序が重要

要素の順序は重要です。同じ値を持っていても順序が異なる2つの配列は、等しくありません。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {3, 2, 1};
        System.out.println(Arrays.equals(a, b));
    }
}

オブジェクト配列を比較する

オブジェクト配列の場合、Arrays.equalsは各要素自身のequalsメソッドを使って要素を比較します。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] a = {"x", "y", "z"};
        String[] b = {"x", "y", "z"};
        System.out.println(Arrays.equals(a, b));
    }
}

読みやすい出力のためのtoString

配列を直接出力すると、クラス名とハッシュを表す[I@1b6d3586のような内容が表示されます。Arrays.toStringを使うと、読みやすい[1, 2, 3]形式で出力できます。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3};
        System.out.println(nums);
        System.out.println(Arrays.toString(nums));
    }
}

ネストした配列:deepEquals

配列の配列では、通常のequalsは各行の外側の参照だけを確認します。ネストした内容を比較するにはArrays.deepEqualsを使ってください。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] a = {{1, 2}, {3, 4}};
        int[][] b = {{1, 2}, {3, 4}};
        System.out.println(Arrays.equals(a, b));
        System.out.println(Arrays.deepEquals(a, b));
    }
}

ネストした配列:deepToString

同様に、Arrays.deepToStringを使うとネストした配列を明確に出力できます。一方、通常のtoStringでは内側の参照が表示されます。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[][] grid = {{1, 2}, {3, 4}};
        System.out.println(Arrays.toString(grid));
        System.out.println(Arrays.deepToString(grid));
    }
}

配列のhashCode

内容に基づくハッシュが必要な場合は、Arrays.hashCodeを使ってください。ネストした配列にはArrays.deepHashCodeを使います。これらはArrays.equalsと整合する結果になります。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 3};
        System.out.println(Arrays.hashCode(a) == Arrays.hashCode(b));
    }
}

ソート後に比較する

順序に関係なく、2つの配列に同じ値の集合が含まれているか確認するには、両方のコピーをソートしてからArrays.equalsで比較します。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] a = {3, 1, 2};
        int[] b = {2, 3, 1};
        int[] ca = Arrays.copyOf(a, a.length);
        int[] cb = Arrays.copyOf(b, b.length);
        Arrays.sort(ca);
        Arrays.sort(cb);
        System.out.println(Arrays.equals(ca, cb));
    }
}

簡単なログ出力

デバッグ中は、出力文の中で配列をArrays.toStringに渡してください。意味の分かりにくい参照ではなく、実際の値を読めるようになります。

理解度チェック

配列の比較についての理解度を確認しましょう。

まとめ

配列の比較と出力を学びました。

  • ==は参照を比較します。内容の等価性を調べるにはArrays.equalsを使います。
  • 順序と長さの両方が重要です。
  • Arrays.toStringは読みやすい出力を生成し、deepToStringはネストにも対応します。
  • deepEqualsはネストした配列を比較します。

よくある質問

「Arrays.equals と toString」レッスンは無料ですか?

はい。「Arrays.equals と toString」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「Arrays.equals と toString」で何を学びますか?

配列を比較して出力します。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Arrays.equals と toString」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Arrays.sortとソート
  2. Arrays.binarySearch
  3. Arrays.fillとcopyOf
  4. Arrays.equals と toString
← Java Academyに戻る