14 Stimmen

Konvertiere Integer-Liste in int-Array

Gibt es einen Weg, eine Liste von Ganzzahlen in ein Array von int (nicht Integer) umzuwandeln? Etwas wie List zu int []? Ohne die Liste zu durchlaufen und die Ganzzahl manuell in int umzuwandeln.

0 Stimmen

Was ist das Problem mit der Schleife hier?

43voto

Colin Hebert Punkte 88407

Sie können toArray verwenden, um ein Array von Integers zu erhalten, ArrayUtils von den apache commons, um es in ein int[] umzuwandeln.


List integerList = new ArrayList();
Integer[] integerArray = integerList.toArray(new Integer[0]);
int[] intArray = ArrayUtils.toPrimitive(integerArray);

Ressourcen :

Zum gleichen Thema :

4voto

Jon Skeet Punkte 1325502

Ich bin sicher, dass Sie etwas in einer Bibliothek von Drittanbietern finden können, aber ich glaube nicht, dass etwas in den Java-Standardbibliotheken integriert ist.

Ich schlage vor, dass Sie einfach eine Hilfsfunktion schreiben, es sei denn, Sie benötigen viele ähnliche Funktionen (in diesem Fall wäre es sinnvoll, die entsprechende Bibliothek von Drittanbietern zu finden). Beachten Sie, dass Sie herausfinden müssen, was mit einem Nullverweis in der Liste passieren soll, was offensichtlich nicht genau im int-Array dargestellt werden kann.

1voto

davmac Punkte 19605

Nein :)

Sie müssen die Liste durchlaufen. Es sollte nicht allzu schmerzhaft sein.

1voto

Sean Patrick Floyd Punkte 283617

Hier ist eine Hilfsmethode, die eine Collection von Integers in ein Array von ints konvertiert. Wenn der Eingabe null ist, wird auch null zurückgegeben. Wenn die Eingabe null-Werte enthält, wird eine defensive Kopie erstellt, die alle null-Werte daraus entfernt. Die ursprüngliche Sammlung bleibt unverändert.

public static int[] toIntArray(final Collection data){
    int[] result;
    // null-Resultat für null-Eingabe
    if(data == null){
        result = null;
    // leeres Array für leere Sammlung
    } else if(data.isEmpty()){
        result = new int[0];
    } else{
        final Collection effective;
        // Falls Daten null enthalten, defensive Kopie erstellen
        // und null-Werte entfernen
        if(data.contains(null)){
            effective = new ArrayList(data);
            while(effective.remove(null)){}
        // Ansonsten die ursprüngliche Sammlung verwenden
        }else{
            effective = data;
        }
        result = new int[effective.size()];
        int offset = 0;
        // Werte speichern
        for(final Integer i : effective){
            result[offset++] = i.intValue();
        }
    }
    return result;
}

Aktualisierung: Guava hat einen Einzeiler für diese Funktionalität:

int[] array = Ints.toArray(data);

Referenz:

-3voto

CodeMadness Punkte 1
    List  listInt = new ArrayList();

    StringBuffer strBuffer = new StringBuffer();

    for(Object o:listInt){
        strBuffer.append(o);
    }

    int [] arrayInt = new int[]{Integer.parseInt(strBuffer.toString())};

Ich denke, das sollte dein Problem lösen

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