Ich möchte die Liste mit Objekten aus java.util.Iterator
füllen. Es gibt einen einfachen Java-ähnlichen Code in einer groovigen Quelldatei.
def itr = reader.read()
List<FooRecord> ret = new ArrayList<FooRecord>()
while (itr.hasNext()) {
FooRecord rs = itr.next()
ret.add(rs)
}
Gibt es eine bessere Möglichkeit, eine Kopie von Iterator
in die Liste durchzuführen?
5 Antworten
def ret = []
ret.addAll(reader.read())
Vielen Dank an JB Nizet
Sie können ein for-each auf dem Iterator ausführen:
itr.each{ret << it}
Haben Sie darüber nachgedacht, ein for () anstelle einer Weile zu verwenden? Wie wäre es, Ihre Klasse vor der Weile zu instanziieren? so was?
def itr = reader.read()
List<FooRecord> ret = new ArrayList<FooRecord>()
FooRecord rs = new FooRecord();
while (itr.hasNext()) {
rs = itr.next()
ret.add(rs)
}
def s = '12345'
def List<String> f=s.iterator().collect{it}
Oder verwenden Sie einfach das Schlüsselwort as
in groovy:
def myList = itr as List
Also der folgende Code:
def list1 = [1, 2, 3]
def itr = list1.iterator()
println itr.class.name
println itr instanceof Iterator
def list2 = itr as List
println "list2: $list2"
println "list2 class: ${list2.class.name}"
Druckt aus:
java.util.ArrayList$Itr
true
list2: [1, 2, 3]
list2 class: ArrayList$Itr1_groovyProxy
Verwandte Fragen
Neue Fragen
groovy
Groovy ist eine objektorientierte Programmiersprache für die Java-Plattform. Es ist eine dynamische Sprache mit ähnlichen Funktionen wie Python, Ruby, Perl und Smalltalk. Es kann als Skriptsprache für die Java-Plattform verwendet werden.