Wie konvertiere ich int[] in die Liste auf Java?

Lesezeit: 6 Minuten

Wie konvertiere ich int in die Liste auf Java
Puppe

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

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

  • Wir können IntStream.Of(array).collect(Collectors.toList) verwenden.

    – Saroj Kumar Sahoo

    15. Mai 2020 um 11:01 Uhr

  • @SarojKumarSahoo Es gibt kein Ein-Argument collect in IntStream.

    – John McClane

    12. Oktober 2020 um 0:25 Uhr

  • Es gibt kein build-in Weg, es zu tun. Sie müssen dies manuell tun, eine ArrayList deklarieren und jeden Wert im int Array zu ArrayList hinzufügen. Was für ein Miss!

    – ChuckZHB

    24. März 2021 um 8:37 Uhr

Wie konvertiere ich int in die Liste auf Java
mikeyreilly

Ströme

  1. In Java 8+ können Sie einen Stream Ihrer erstellen int Reihe. Entweder anrufen Arrays.stream oder IntStream.of.
  2. Anruf IntStream#boxed Boxumwandlung von zu verwenden int primitiv zu Integer Objekte.
  3. Sammeln Sie in einer Liste mit Stream.collect( Collectors.toList() ). Oder einfacher in Java 16+, rufen Sie an Stream#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();

  • Entspricht: Arrays.stream(ints).boxed().collect(Collectors.toList());

    – njfrost

    1. Juli 2016 um 17:12 Uhr

  • @njfrost Du hast Recht und IntStream.of ruft nur Arrays.stream auf, also habe ich die Antwort nach deinem Vorschlag verbessert

    – mikeyreilly

    4. Oktober 2017 um 8:00 Uhr

  • Aus irgendeinem Grund scheint dies nicht den erwarteten Ergebnistyp auf Android Studio zurückzugeben (funktioniert auf Eclipse). Es heißt, erwartete Liste gefundene Liste.

    – Eugenio López

    7. August 2018 um 19:13 Uhr

  • Es sieht sauber und prägnant aus, aber als ich dies im Gegensatz zu der von @willcodejavaforfood auf Leetcode bereitgestellten Basislösung verwendete, verschlechterte sich die Programmleistung sowohl in Bezug auf den Speicher als auch auf die Laufzeit

    – chitresh sirohi

    31. März 2020 um 3:31 Uhr

  • @chitreshsirohi Das liegt daran, dass Lambda-Funktionen, die in Streams verwendet werden, dazu führen, dass Java einige anonyme Klassen erstellt.

    – Ashvin Sharma

    2. Juni 2020 um 3:44 Uhr

1646255832 410 Wie konvertiere ich int in die Liste auf Java
willcodejavaforfood

Es gibt keine Verknüpfung zum Konvertieren von int[] zu List<Integer> als Arrays.asList befasst sich nicht mit Boxen und wird nur eine erstellen List<int[]> was du nicht willst. 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);
}

  • Am besten initialisiert man die Liste mit der Größe des Arrays

    – David Rabinowitz

    2. Juli 2009 um 11:54 Uhr

  • for (int i: ints) intList.add(i);

    – Stefan Denne

    2. Juli 2009 um 12:19 Uhr

  • @willcodejavaforfood – David meint, dass dies besser ist: new ArrayList(ints.length);

    – Stefan Denne

    2. Juli 2009 um 12:25 Uhr

  • @willcodejavaforfood: Das Deklarieren der Größe der ArrayList beim Erstellen verhindert, dass die Größe intern geändert werden muss, nachdem eine bestimmte Menge hinzugefügt wurde. Ich bin mir nicht sicher, ob der Vorteil gering ist, aber es gibt definitiv einen Vorteil.

    – Grundlefleck

    24. Januar 2010 um 20:22 Uhr

  • new ArrayList<Integer>() {{ for (int i : ints) add(i); }}

    Benutzer4910279

    2. Juli 2015 um 1:55 Uhr

1646255833 573 Wie konvertiere ich int in die Liste auf Java
Louisgab

Auch von Guave-Bibliotheken… com.google.common.primitives.Ints:

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

  • Dies sollte die richtige Antwort sein. Siehe den zweiten Satz der Frage: “Natürlich interessiert mich jede andere Antwort, als es Punkt für Punkt in einer Schleife zu tun.”

    – Josketres

    22. April 2014 um 12:22 Uhr


  • Hier gibt es ein paar Feinheiten. Die zurückgegebene Liste verwendet das bereitgestellte Array als Sicherungsspeicher, daher sollten Sie das Array nicht mutieren. Die Liste garantiert auch nicht die Identität der enthaltenen Integer-Objekte. Das heißt, das Ergebnis von list.get(0) == list.get(0) wird nicht angegeben.

    – pburka

    22. April 2015 um 15:45 Uhr

  • Achten Sie beim Hinzufügen von Bibliotheken auf die Anzahl der Methodenreferenzen auf Android. Guter Fund aber.

    – Milosmen

    3. Oktober 2016 um 13:39 Uhr

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

Dieser Code wird nicht Erstellen Sie eine Liste mit 10 ganzen Zahlen. Es wird gedruckt 1nicht 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 zum Konvertieren, Sie sind mit der Schleife besser dran.

Wenn Ihr Array andererseits Objekte und keine Primitiven enthält, funktioniert Arrays.asList:

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

1646255834 447 Wie konvertiere ich int in die Liste auf Java
Christoffer

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

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; }
    };
}

  • +1 das ist kürzer als meins, aber meins funktioniert für alle primitiven Typen

    – dfa

    2. Juli 2009 um 12:31 Uhr

  • Das ist zwar schneller und verbraucht weniger Speicher als das Erstellen einer ArrayList, aber der Kompromiss ist, dass List.add() und List.remove() nicht funktionieren.

    – Stefan Denne

    2. Juli 2009 um 13:03 Uhr

  • Ich mag diese Lösung für große Arrays mit spärlichen Zugriffsmustern, aber für häufig aufgerufene Elemente würde dies zu vielen unnötigen Instanziierungen von Integer führen (z. B. wenn Sie 100 Mal auf dasselbe Element zugegriffen hätten). Außerdem müssten Sie Iterator definieren und den Rückgabewert in Collections.unmodifiableList einschließen.

    – Adamsky

    2. Juli 2009 um 13:44 Uhr

  • @Christoffer danke. Ich habe die hinzugefügt set Methode und jetzt kann ich sogar das Array sortieren …

    – freedev

    28. Juli 2014 um 12:17 Uhr

1646255835 743 Wie konvertiere ich int in die Liste auf Java
Sнаđошƒаӽ

Das kleinste Stück Code wäre:

public List<Integer> myWork(int[] array) {
    return Arrays.asList(ArrayUtils.toObject(array));
}

wo ArrayUtils von commons-lang kommt 🙂

  • +1 das ist kürzer als meins, aber meins funktioniert für alle primitiven Typen

    – dfa

    2. Juli 2009 um 12:31 Uhr

  • Das ist zwar schneller und verbraucht weniger Speicher als das Erstellen einer ArrayList, aber der Kompromiss ist, dass List.add() und List.remove() nicht funktionieren.

    – Stefan Denne

    2. Juli 2009 um 13:03 Uhr

  • Ich mag diese Lösung für große Arrays mit spärlichen Zugriffsmustern, aber für häufig aufgerufene Elemente würde dies zu vielen unnötigen Instanziierungen von Integer führen (z. B. wenn Sie 100 Mal auf dasselbe Element zugegriffen hätten). Außerdem müssten Sie Iterator definieren und den Rückgabewert in Collections.unmodifiableList einschließen.

    – Adamsky

    2. Juli 2009 um 13:44 Uhr

  • @Christoffer danke. Ich habe die hinzugefügt set Methode und jetzt kann ich sogar das Array sortieren …

    – freedev

    28. Juli 2014 um 12:17 Uhr

In Java 8 mit Stream:

int[] ints = {1, 2, 3};
List<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, Arrays.stream(ints).boxed().toArray(Integer[]::new));

oder mit Sammlern

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

  • Warum nicht einfach einen Kollektor verwenden?

    – Assylias

    18. Mai 2014 um 12:23 Uhr

916210cookie-checkWie konvertiere ich int[] in die Liste auf Java?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy