2016-05-21 2 views
0

ich den folgenden Code bin mit einem Set konvertieren int []Konvertieren einer Set <Integer> auf eine primitive Array

Set<Integer> common = new HashSet<Integer>(); 
int[] myArray = (int[]) common.toArray(); 

die ich bekam die folgende Fehlermeldung:

error: incompatible types: Object[] cannot be converted to int[] 

Was wäre das sein sauberste Art und Weise, die Konvertierung ohne Hinzufügen von Element eins nach dem anderen mit einer for-Schleife zu tun? Vielen Dank!

+0

Endlich ein gut formatierte Frage mit der richtigen Grammatik auf Stackoverflow –

Antwort

2

You cannot explicitly cast something into an array.

tun:

Integer[] arr = new Integer[common.size()]; 
Iterator<Integer> iterator = common.iterator(); 
int i = 0; 
while (iterator.hasNext()){ 
    arr[i++] = iterator.next(); 
} 
+0

@ Tom warum sollte der Code nicht kompilieren? –

+0

@tom würde es jetzt funktionieren? –

+0

@Tom Bitte bearbeiten Sie meine Antwort –

4

Sie tun dies in der Regel:

Set<Integer> common = new HashSet<Integer>(); 
int[] myArray = common.stream().mapToInt(Integer::intValue).toArray(); 
+0

Mann, ich möchte lernen, über '::' Operator Wo lerne ich es Form? –

+0

Ich habe Ihre Antwort aktualisiert. –

+0

@TilakMadichetti Dies wird als "Methodenreferenz" bezeichnet. Siehe z.B. hier: https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html – xehpuk

4
Set<Integer> common = new HashSet<>(); 
int[] values = Ints.toArray(common); 
+0

'Integer []! = Int []' – xehpuk

+0

Geändert jetzt, um die Guavas zu verwenden Helfer Bibliothek. – Veeram

Verwandte Themen