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.
- Wie kann ich in Java List<Integer> in int[] umwandeln? (16 Antworten )
Antworten
Zu viele Anzeigen?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 :
- Apache commons -
ArrayUtils.toPrimitive(Integer[])
- Apache commons lang
- Javadoc -
Collection.toArray(T[])
Zum gleichen Thema :
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.
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:
0 Stimmen
Was ist das Problem mit der Schleife hier?