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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Arrays.sortとソート
- Arrays.binarySearch
- Arrays.fillとcopyOf
- Arrays.equals と toString