0Pricing
Java Academy · レッスン

Arrays.fillとcopyOf

配列を埋めてサイズ変更します

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

配列を埋める

Arrays.fillは、配列のすべての要素を同じ値に設定します。配列をインプレースで変更するため、データの初期化やリセットに便利です。

基本的な埋め込み

配列全体を1つの値で埋めます。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = new int[5];
        Arrays.fill(nums, 7);
        System.out.println(Arrays.toString(nums));
    }
}

範囲を指定して埋める

Arrays.fill(array, from, to, value)は、配列の一部だけを埋めます。範囲にはfromを含み、toは含みません。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = new int[6];
        Arrays.fill(nums, 2, 5, 9);
        System.out.println(Arrays.toString(nums));
    }
}

オブジェクト配列を埋める

fillはオブジェクト配列にも使えます。ただし、オブジェクトで埋めると、すべてのスロットが同じ参照を指すことに注意してください。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] grid = new String[4];
        Arrays.fill(grid, "empty");
        System.out.println(Arrays.toString(grid));
    }
}

copyOfでサイズを変更する

配列の長さは固定です。より大きい配列や小さい配列が必要な場合は、Arrays.copyOf(array, newLength)で指定したサイズの新しい配列を返します。

配列を拡張する

新しい長さが大きい場合、追加されたスロットにはデフォルト値が設定されます。数値型では0、boolean型ではfalse、オブジェクトではnullです。

import java.util.Arrays;

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

配列を縮小する

新しい長さのほうが短い場合、配列は切り詰められ、末尾の要素が削除されます。

import java.util.Arrays;

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

範囲をコピーする

Arrays.copyOfRange(array, from, to)は、範囲を新しい配列にコピーします。ここでもfromは含まれ、toは含まれません。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] nums = {10, 20, 30, 40, 50};
        int[] middle = Arrays.copyOfRange(nums, 1, 4);
        System.out.println(Arrays.toString(middle));
    }
}

copyOfは変更しない

fillとは異なり、copyOfは元の配列を変更せず、まったく新しい配列を返します。元の配列とコピーは独立しています。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] original = {1, 2, 3};
        int[] copy = Arrays.copyOf(original, 3);
        copy[0] = 99;
        System.out.println("Original: " + Arrays.toString(original));
        System.out.println("Copy:     " + Arrays.toString(copy));
    }
}

手動でサイズ変更する定型パターン

ArrayListが登場する前は、より大きな配列にコピーすることで配列を拡張していました。copyOfを使えば、1回の呼び出しで容量を2倍にできます。

import java.util.Arrays;

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

fillとcopyOfの比較

違いを覚えておきましょう。fillは既存のスロットをその場で上書きし、戻り値はvoidです。一方、copyOfはサイズを変更したコピーを作成して返します。新しい長さが必要かどうかに応じて使い分けてください。

理解度チェック

fillとcopyOfについての理解度を確認しましょう。

まとめ

配列への値の設定とサイズ変更を学びました。

  • Arrays.fillは、すべての要素または指定した範囲の要素を、その場で1つの値に設定します。
  • Arrays.copyOfは、指定した長さの新しい配列を返し、要素を埋めたり切り詰めたりします。
  • Arrays.copyOfRangeは、指定した範囲をコピーします。
  • copyOfは元の配列を変更せず、fillは配列を変更します。

よくある質問

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

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

「Arrays.fillとcopyOf」で何を学びますか?

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

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

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

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

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

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

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

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

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