Es scheint etwas spät zu sein, aber hier sind meine zwei Cent. Wir können nicht haben, List<int>
wie int
es ein primitiver Typ ist, also können wir nur haben List<Integer>
.
Java 8 (int Array)
int[] ints = new int[] {1,2,3,4,5};
List<Integer> list11 =Arrays.stream(ints).boxed().collect(Collectors.toList());
Java 8 und niedriger (Integer Array)
Integer[] integers = new Integer[] {1,2,3,4,5};
List<Integer> list21 = Arrays.asList(integers); // returns a fixed-size list backed by the specified array.
List<Integer> list22 = new ArrayList<>(Arrays.asList(integers)); // good
List<Integer> list23 = Arrays.stream(integers).collect(Collectors.toList()); //Java 8 only
Benötigen Sie ArrayList und nicht List?
Wenn wir eine spezifische Implementierung von List
zB ArrayList
wollen, können wir verwenden toCollection
als:
ArrayList<Integer> list24 = Arrays.stream(integers)
.collect(Collectors.toCollection(ArrayList::new));
Warum list21
kann nicht strukturell verändert werden?
Wenn wir Arrays.asList
die Größe der zurückgegebenen Liste verwenden, ist dies fest, da es sich bei der zurückgegebenen Liste nicht um java.util.ArrayList
eine private statische Klasse handelt, die darin definiert ist java.util.Arrays
. Wenn wir also Elemente zur zurückgegebenen Liste hinzufügen oder daraus entfernen, UnsupportedOperationException
wird ein ausgelöst. Wir sollten also weitermachen, list22
wenn wir die Liste ändern möchten. Wenn wir Java8 haben, können wir auch mit gehen list23
.
Klar zu sein list21
kann in dem Sinne geändert werden, dass wir es aufrufen können, list21.set(index,element)
aber diese Liste kann möglicherweise nicht strukturell geändert werden, dh es können keine Elemente zur Liste hinzugefügt oder daraus entfernt werden. Sie können diese Frage auch überprüfen .
Wenn wir eine unveränderliche Liste wollen, können wir sie wie folgt umschließen:
List<Integer> list 22 = Collections.unmodifiableList(Arrays.asList(integers));
Ein weiterer zu beachtender Punkt ist, dass die Methode Collections.unmodifiableList
eine nicht veränderbare Ansicht der angegebenen Liste zurückgibt. Eine nicht modifizierbare Ansichtssammlung ist eine Sammlung, die nicht modifizierbar ist und auch eine Ansicht auf eine Hintergrundsammlung darstellt. Beachten Sie, dass Änderungen an der Hintergrundsammlung möglicherweise weiterhin möglich sind. Wenn sie auftreten, sind sie in der nicht veränderbaren Ansicht sichtbar.
Wir können eine wirklich unveränderliche Liste in Java 9 und 10 haben.
Wirklich unveränderliche Liste
Java 9:
String[] objects = {"Apple", "Ball", "Cat"};
List<String> objectList = List.of(objects);
Java 10 (wirklich unveränderliche Liste) auf zwei Arten:
List.copyOf(Arrays.asList(integers))
Arrays.stream(integers).collect(Collectors.toUnmodifiableList());
Überprüfen Sie auch meine Antwort für mehr.
Arrays.asList(new int[] { 1, 2, 3 })
; auf jeden Fall hat kompilieren nicht in Java 1.4.2, weil einint[]
ist nicht einObject[]
.