Wer weiß, ob es eine Standardmethode zum Erstellen einer Liste aus einer Iterator-Instanz gibt?Liste erstellen <T> Instanz von Iterator <T>
Antwort
Ich neige dazu, in Richtung Guava's Lists.newArrayList(Iterator)
, weil ich in der Regel Guava als Abhängigkeit, und es ist bereits vorhanden.
Verwenden Sie die Iterator
, um jedes Element zu erhalten und fügen Sie es zu einem List
hinzu.
List<String> list = new LinkedList<String>();
while(iter.hasNext()) { // iter is of type Iterator<String>
list.add(iter.next());
}
Danke, das habe ich gemacht, aber ich hatte auf eine magische Methode gehofft da draußen, um mir zu helfen :) – BillMan
Wenn Sie magische Methoden wollten, sollten Sie PHP verwendet haben;) – tskuzzy
Wenn Sie magische Methoden wollten, sollten Sie Bibliotheken von Drittanbietern verwendet haben. –
versuchen, etwas wie folgt aus:
public T List<T> listFromIterator(Iterator<T> iterator) {
List<T> result = new LinkedList<T>();
while(iterator.hasNext()) {
result.add(iterator.next());
}
}
Eines ist zu beachten, dass, wenn der Iterator nicht am Anfang Ihrer Struktur ist, Sie haben keine Möglichkeit vorherigen Elemente abgerufen werden.
Wenn Sie über die Auflistung verfügen, aus der der Iterator stammt, können Sie eine Liste erstellen, indem Sie einen Konstruktor verwenden, der eine Auflistung abruft. ex: der LinkedList
Konstruktor:
LinkedList(Collection<? extends E> c)
Dies ist der Weg, den ich von List Iterator konvertieren und umgekehrt.
ArrayList arrayList = new ArrayList();
// add elements to the array list
arrayList.add("C");
arrayList.add("A");
arrayList.add("E");
arrayList.add("B");
arrayList.add("D");
arrayList.add("F");
// use iterator to display contents of arrayList
System.out.print("Original contents of arrayList: ");
Iterator iterator = arrayList.iterator();
ArrayList arrayList2 = new ArrayList();
while(iterator.hasNext()) {
Object element = iterator.next();
arrayList2.add(element);
System.out.print(element + " ");
}
hatte ich dieses Bedürfnis und als Nutzer von Apache Commons, das ist, was ich getan habe:
IteratorUtils.toList(iterator);
- 1. Wie benutze ich CMake Generator Ausdruck $ <TARGET_FILE: tgt>?
- 2. Oracle - "Sql Entwickler" Datenbank kopieren Dienstprogramm - Src/tgt anderes Schema
- 3. Überladung << für Vektor von Paaren Iterator
- 4. Liste erstellen <int> STIL mit
- 5. Asynchroner Iterator Aufgabe <IEnumerable <T>>
- 6. Liste <Object> vs Liste <dynamic>
- 7. Erstellen und verbinden Pthreads mit Vektor <pthread_t> :: Iterator
- 8. Konvertieren Liste <Integer> zu Liste <String>
- 9. GSSException: Keine gültigen Anmeldeinformationen zur Verfügung gestellt (Mechanismus-Ebene: Kerberos tgt konnte nicht gefunden werden)
- 10. Erstellen und Lesen Liste <> von Cookies
- 11. Umwandlung Liste <XElement> zu Liste <XElement.Value>
- 12. Liste Kombination <Base> mit Liste <Derived>
- 13. „<<<<<<“ Symbol im Quellcode
- 14. Liste <T> .AsReadOnly() vs IReadOnlyCollection <T>
- 15. Erstellen von Func <IQueryable <TEntity>, IOrderedQueryable <TEntity>> dynamisch?
- 16. Accept Templat-Parameter von stl_container_type <string> :: iterator
- 17. Hier finden Sie eine Liste <string> von Variablen innerhalb einer Liste <T>
- 18. howto get Builder zum Erstellen <tag></tag> anstelle von <tag/>
- 19. <__ main __. Stack-Instanz bei 0x021ED328>
- 20. .Net 4: Einfache Möglichkeit zum dynamischen Erstellen der Liste <Tuple<...>> Ergebnisse
- 21. Shuffle Liste <T>
- 22. Populate <dl> Liste von Array
- 23. IEnumerable <object> zur Liste <object>
- 24. THREE.Camera.prototype.lookAt</ <() - Was bedeutet</ <?
- 25. Fügen Sie Daten von Liste <String[]> zu Liste <String> und Karte <Striing, Striing>
- 26. Convert Liste <T> in eine andere Liste <T>, die eine andere Liste enthält <T>
- 27. Liste <T> .AddRange/InsertRange erstellen temporäres Array
- 28. Java-Wörterbuch <String, Liste <Object>>
- 29. Cloning Liste <T>
- 30. Fehler mit T :: Iterator, wo Vorlage Parameter T möglicherweise Vektor <int> oder Liste <int>
Sie Liste erstellen kann nicht von Iterator, Sie Liste erstellen und Iterator über seine Elemente. – Sajmon
Es macht nicht wirklich Sinn, eine 'List' aus einem' Iterator' zu erstellen. Es ist wie ein Array aus nur einem Index zu erstellen! – adarshr
Wenn Ihr Iterator bereits die Funktion 'next()' aufgerufen hat, können Sie nie vorhergehende Elemente abrufen. –