Groovy 来自java迭代器的填充列表

Groovy 来自java迭代器的填充列表,groovy,collections,iterator,Groovy,Collections,Iterator,我想用java.util.Iterator中的对象填充列表。groovy源文件中有一个简单的类似java的代码 def itr = reader.read() List<FooRecord> ret = new ArrayList<FooRecord>() while (itr.hasNext()) { FooRecord rs = itr.next() ret.add(rs) } def itr=reader.read() List ret=new

我想用
java.util.Iterator
中的对象填充列表。groovy源文件中有一个简单的类似java的代码

def itr = reader.read()  
List<FooRecord> ret = new ArrayList<FooRecord>()
while (itr.hasNext()) {
    FooRecord rs = itr.next()
    ret.add(rs)
}
def itr=reader.read()
List ret=new ArrayList()
while(itr.hasNext()){
foorrecord rs=itr.next()
返回添加(rs)
}

是否有groovier方法执行从
迭代器到列表的复制?

您可以在迭代器上运行for each:

itr.each{ret << it}

itr.each{ret你有没有想过用for()代替while?在while之前实例化你的类呢?像这样

def itr = reader.read()  
List<FooRecord> ret = new ArrayList<FooRecord>()
FooRecord rs = new FooRecord();
while (itr.hasNext()) {
 rs = itr.next()
 ret.add(rs)
}
def itr=reader.read()
List ret=new ArrayList()
FooRecord rs=新的FooRecord();
while(itr.hasNext()){
rs=itr.next()
返回添加(rs)
}
多亏了JB Nizet

def s='12345'
def s = '12345'
def List<String> f=s.iterator().collect{it}
def List f=s.iterator().collect{it}
或者在groovy中使用
作为
关键字:

def myList = itr as List
因此,以下代码:

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}"
打印出:

java.util.ArrayList$Itr
true
list2:       [1, 2, 3]
list2 class: ArrayList$Itr1_groovyProxy
java.util.ArrayList$Itr
true
list2:       [1, 2, 3]
list2 class: ArrayList$Itr1_groovyProxy