Ce face Arrays.copyOf
Arrays.copyOf(a, n) creează un array nou de lungime n. Dacă n este mai mic decât lungimea, păstrează primele n elemente; dacă e mai mare, completează restul cu valoarea implicită (0, false, null). Este felul simplu de a „mări” un array.
Arrays.copyOfRange(a, de, pana) copiază pozițiile de la de (inclus) la pana (exclus). pana poate depăși lungimea; pozițiile în plus primesc valoarea implicită.
Ambele fac o copie superficială: la array-uri de obiecte se copiază referințele, nu obiectele. Originalul nu se schimbă.
Parametri
| Parametru | Descriere |
|---|---|
original |
Array-ul sursă. |
newLength |
Lungimea array-ului nou. |
from, to |
Porțiunea copiată: from inclus, to exclus. |
Ce returnează
Un array nou.
Exemple
Exemplul 1: Mărirea și micșorarea unui array
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] note = {9, 7, 10};
int[] maiMare = Arrays.copyOf(note, 5);
int[] primele2 = Arrays.copyOf(note, 2);
System.out.println(Arrays.toString(maiMare));
System.out.println(Arrays.toString(primele2));
String[] orase = {"Iași", "Cluj"};
System.out.println(Arrays.toString(Arrays.copyOf(orase, 4)));
}
}
Rezultat
[9, 7, 10, 0, 0]
[9, 7]
[Iași, Cluj, null, null]
Exemplul 2: O porțiune cu copyOfRange
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String[] luni = {"ian", "feb", "mar", "apr", "mai", "iun", "iul", "aug", "sep", "oct", "nov", "dec"};
String[] trimestru2 = Arrays.copyOfRange(luni, 3, 6);
System.out.println("T2: " + Arrays.toString(trimestru2));
int[] vanzari = {120, 80, 150};
System.out.println(Arrays.toString(Arrays.copyOfRange(vanzari, 1, 5)));
}
}
Rezultat
T2: [apr, mai, iun]
[80, 150, 0, 0]
Greșeli frecvente
- Faci
int[] copie = original;și crezi că ai o copie. Ambele variabile arată spre același array; foloseșteArrays.copyOfsauoriginal.clone(). - Te aștepți ca la array-uri de obiecte să se copieze și obiectele. Se copiază doar referințele.
Comenzi înrudite
Arrays.fill: Pune aceeași valoare pe toate pozițiile unui array sau pe o porțiune din el.List.subList: Returnează o vedere a unei porțiuni din listă, de la fromIndex inclusiv la toIndex exclusiv.Arrays: Clasă cu metode statice pentru array-uri: afișare, sortare, căutare, copiere, umplere, comparare și transformare în listă sau stream.Collection.toArray: Copiază elementele unei liste, mulțimi sau cozi într-un array nou, de tip Object[] sau de tipul ales (String[], Integer[]).