Ce face Arrays.asList
Arrays.asList(a, b, c) sau Arrays.asList(array) returnează o List care folosește chiar array-ul în spate. get și set funcționează, iar set modifică și array-ul. add și remove aruncă UnsupportedOperationException, pentru că un array nu își poate schimba lungimea.
Spre deosebire de List.of, acceptă null și permite set și sort. Pentru o listă complet modificabilă, copiază: new ArrayList<>(Arrays.asList(...)).
Atenție la array-urile de primitive: Arrays.asList(new int[]{1, 2}) nu dă o listă de numere, ci o listă cu un singur element (array-ul întreg), de tip List<int[]>.
Parametri
| Parametru | Descriere |
|---|---|
a |
Valorile sau un array de obiecte. |
Ce returnează
O listă de mărime fixă, legată de array.
Exemple
Exemplul 1: Lista și array-ul se modifică împreună
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
String[] echipa = {"Ana", "Radu", "Elena"};
List<String> lista = Arrays.asList(echipa);
lista.set(1, "Mihai");
System.out.println("Array: " + Arrays.toString(echipa));
echipa[0] = "Ioana";
System.out.println("Listă: " + lista);
try {
lista.add("Bogdan");
} catch (UnsupportedOperationException e) {
System.out.println("add: UnsupportedOperationException, mărimea e fixă");
}
}
}
Rezultat
Array: [Ana, Mihai, Elena]
Listă: [Ioana, Mihai, Elena]
add: UnsupportedOperationException, mărimea e fixă
Exemplul 2: Listă modificabilă și capcana primitivelor
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> orase = new ArrayList<>(Arrays.asList("Iași", "Cluj"));
orase.add("Arad");
System.out.println(orase);
int[] primitive = {1, 2, 3};
List<int[]> gresit = Arrays.asList(primitive);
System.out.println("Mărime cu int[]: " + gresit.size());
List<Integer> corect = Arrays.asList(1, 2, 3);
System.out.println("Mărime cu valori Integer: " + corect.size());
}
}
Rezultat
[Iași, Cluj, Arad]
Mărime cu int[]: 1
Mărime cu valori Integer: 3
Greșeli frecvente
- Adaugi sau ștergi din lista returnată. Apare
UnsupportedOperationException; copiaz-o într-unArrayList. - Dai un
int[]și aștepți oList<Integer>. Primești o listă cu un singur element; foloseșteArrays.stream(a).boxed().toList().
Comenzi înrudite
List.of: Creează o listă nemodificabilă din valorile date (of) sau dintr-o copie a altei colecții (copyOf).Collection.toArray: Copiază elementele unei liste, mulțimi sau cozi într-un array nou, de tip Object[] sau de tipul ales (String[], Integer[]).Arrays.stream: Creează un stream din elementele unui array, ca să le filtrezi, transformi sau aduni (sum, average, max) cu o singură expresie.Collections.addAll: Adaugă dintr-o dată mai multe valori (sau un array) într-o colecție existentă. Returnează true dacă s-a schimbat.ArrayList: Lista implementată cu un array intern care crește automat; acces foarte rapid după index. Cea mai folosită listă din Java.