578 Stimmen

Wie konvertiert man int[] in List<Integer> in Java?

Wie konvertiere ich int[] in List<Integer> in Java?

Natürlich bin ich an jeder anderen Antwort interessiert, als es in einer Schleife zu tun, Punkt für Punkt. Aber wenn es keine andere Antwort gibt, werde ich diese als die beste auswählen, um zu zeigen, dass diese Funktionalität nicht Teil von Java ist.

568voto

mikeyreilly Punkte 5743

Ströme

  1. In Java 8+ können Sie einen Stream aus Ihrem int Array. Rufen Sie entweder Arrays.stream o IntStream.of .
  2. Rufen Sie an. [IntStream#boxed](https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/stream/IntStream.html#boxed()) zur Verwendung der Boxenumwandlung von int primitiv bis Integer Objekte.
  3. Sammeln in einer Liste mit Stream.collect( Collectors.toList() ) . Oder, einfacher in Java 16+, rufen Sie [Stream#toList()](https://docs.oracle.com/en/java/javase/16/docs/api/java.base/java/util/stream/Stream.html#toList()) .

Beispiel:

int[] ints = {1,2,3};
List<Integer> list = Arrays.stream(ints).boxed().collect(Collectors.toList());

In Java 16 und höher:

List<Integer> list = Arrays.stream(ints).boxed().toList();

351voto

willcodejavaforfood Punkte 41426

Es gibt keine Abkürzung für die Konvertierung von int[] a List<Integer> als Arrays.asList befasst sich nicht mit Boxen und erstellt lediglich eine List<int[]> was nicht das ist, was Sie wollen. Sie müssen eine Utility-Methode erstellen.

int[] ints = {1, 2, 3};
List<Integer> intList = new ArrayList<Integer>(ints.length);
for (int i : ints)
{
    intList.add(i);
}

194voto

louisgab Punkte 2344

Auch von Guava-Bibliotheken ... com.google.common.primitives.Ints:

List<Integer> Ints.asList(int...)

117voto

Leonel Punkte 27363

Arrays.asList wird nicht funktionieren, wie einige der anderen Antworten erwarten.

Dieser Code wird nicht eine Liste mit 10 ganzen Zahlen erstellen. Es wird gedruckt 1 ではなく 10 :

int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List lst = Arrays.asList(arr);
System.out.println(lst.size());

Dadurch wird eine Liste von Ganzzahlen erstellt:

List<Integer> lst = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

Wenn Sie bereits das Array von ints haben, gibt es keine schnelle Möglichkeit zu konvertieren, Sie sind besser dran mit der Schleife.

Andererseits, wenn Ihr Array Objekte und keine Primitiven enthält, wird Arrays.asList funktionieren:

String str[] = { "Homer", "Marge", "Bart", "Lisa", "Maggie" };
List<String> lst = Arrays.asList(str);

56voto

Christoffer Punkte 12396

Ich werde eine weitere Antwort mit einer anderen Methode hinzufügen; keine Schleife, sondern eine anonyme Klasse, die die Autoboxing-Funktionen nutzen wird:

public List<Integer> asList(final int[] is)
{
    return new AbstractList<Integer>() {
            public Integer get(int i) { return is[i]; }
            public int size() { return is.length; }
    };
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X