Arrays.asList (T [] Array)?

8

Also gibt es Arrays.asList(T... a) aber das funktioniert auf varargs.

Was passiert, wenn ich das Array bereits in T[] a habe? Gibt es eine Bequemlichkeitsmethode, um ein List<T> daraus zu erstellen, oder muss ich es manuell tun als:

%Vor%     
Jason S 01.04.2011, 14:08
quelle

2 Antworten

17

Nur weil es mit varargs funktioniert, heißt das nicht, dass Sie es nicht normal nennen können:

%Vor%

Das einzige knifflige Bit ist, wenn T ist Object , wo Sie eine Umwandlung verwenden sollten, um dem Compiler mitzuteilen, ob es das Argument in ein Array umbrechen soll oder nicht:

%Vor%

oder

%Vor%     
Jon Skeet 01.04.2011, 14:10
quelle
0

Wie Sie wahrscheinlich bereits wissen, gibt es eine statische Klasse namens Java .util.Collections , die eine Reihe nützlicher Methoden zum Umgang mit Arrays wie Suchen und Sortieren bietet.

Wie bei Ihrer Frage gibt das Collection-Interface unter anderem Methoden für add , remove und toArray an. Aus dem einen oder anderen Grund haben die Autoren der API entschieden, dass die Methode add und addAll die einzigen Eingabefunktionen für den Benutzer sein wird.

Eine Erklärung dafür, warum Java-Listen Arrays von Objekten nicht hinzufügen können, besteht darin, dass Listen einen Iterator verwenden und Iteratoren beim Scrollen strenger sind (dh zum nächsten Wert gehen) als Arrays, die nicht alle ihre Indexwerte i = (1, 2, 5, 9, 22, ...) .

Auch Arrays sind nicht typsicher ; Das heißt, sie können nicht garantieren, dass alle ihre Elemente einer bestimmten Superklasse oder Schnittstelle entsprechen, während Generika (zu denen List gehört) die Typensicherheit garantieren können. Daher hat die Liste die Möglichkeit, jedes Element mit der Methode add zu validieren.

Ich denke, dass Sie sich darauf verlassen können, dass Ihre Methode, ein Array zu einer Liste hinzuzufügen, eine der (wenn nicht die meisten) effizientesten Methoden ist, um diesen Effekt in Java zu erreichen.

    
Sinker 01.04.2011 14:30
quelle

Tags und Links