Arrays.fill în Java

Pune aceeași valoare pe toate pozițiile unui array sau pe o porțiune din el.

Sintaxă
static void fill(int[] a, int val)            // și pentru celelalte tipuri
static void fill(int[] a, int fromIndex, int toIndex, int val)
static void fill(Object[] a, Object val)

Ce face Arrays.fill

Un array nou are valori implicite: 0 pentru numere, false pentru boolean, null pentru obiecte. Arrays.fill(a, x) pune x pe toate pozițiile; fill(a, de, pana, x) doar pe porțiunea [de, pana).

Pentru array-uri de obiecte, toate pozițiile vor arăta spre același obiect. La o matrice, fill lucrează doar pe un rând; pentru toată matricea, apelezi fill pentru fiecare rând.

Parametri

Parametru Descriere
a Array-ul de umplut.
fromIndex, toIndex Porțiunea: fromIndex inclus, toIndex exclus.
val Valoarea pusă.

Ce returnează

Nimic (void).

Exemple

Exemplul 1: Locuri libere și ocupate

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        char[] locuri = new char[10];
        Arrays.fill(locuri, '_');
        Arrays.fill(locuri, 2, 5, 'X');   // pozițiile 2, 3, 4 ocupate
        System.out.println(new String(locuri));

        int[] distante = new int[5];
        Arrays.fill(distante, Integer.MAX_VALUE);
        distante[0] = 0;
        System.out.println(Arrays.toString(distante));
    }
}

Rezultat

__XXX_____
[0, 2147483647, 2147483647, 2147483647, 2147483647]

Exemplul 2: Umplerea unei matrice, rând cu rând

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[][] tabla = new String[3][3];
        for (String[] rand : tabla) {
            Arrays.fill(rand, ".");
        }
        tabla[1][1] = "X";
        for (String[] rand : tabla) {
            System.out.println(String.join(" ", rand));
        }
    }
}

Rezultat

. . .
. X .
. . .

Greșeli frecvente

  • Faci Arrays.fill(matrice, new int[3]) și crezi că ai rânduri diferite. Toate rândurile sunt același array; o modificare apare pe toate.
  • Uiți că toIndex este exclus.

Comenzi înrudite

  • Collections.nCopies: Returnează o listă nemodificabilă cu aceeași valoare repetată de n ori. Utilă pentru valori inițiale și separatoare.
  • Arrays.copyOf: copyOf face un array nou cu primele n elemente (completând cu 0/null dacă e mai lung); copyOfRange copiază o porțiune.
  • Arrays.toString: toString transformă un array în text de forma [1, 2, 3]; deepToString face același lucru pentru matrice (array-uri de array-uri).
  • Arrays: Clasă cu metode statice pentru array-uri: afișare, sortare, căutare, copiere, umplere, comparare și transformare în listă sau stream.