Groovy非常强大,可以管理集合。我有一个像这样的列表:
10.times{
Person person = new Person(
name: nameList.get() //I WANT TO GET A RANDOM NAME FROM THE LIST
)
}
我要做的是迭代10次以从第一个列表中获得具有随机名称的10个人。
%timeit
这有两个显而易见的原因,我没有在nameList.get中添加任何索引,而且我没有创建10个不同的Person对象。
答案 0 :(得分:12)
只需使用Java方法Collections.shuffle()
,如
class Person {
def name
}
def nameList = ["Jon", "Mike", "Alexia"]
10.times {
Collections.shuffle nameList
Person person = new Person(
name: nameList.first()
)
println person.name
}
或使用像
这样的随机索引class Person {
def name
}
def nameList = ["Jon", "Mike", "Alexia"]
def nameListSize = nameList.size()
def r = new Random()
10.times {
Person person = new Person(
name: nameList.get(r.nextInt(nameListSize))
)
println person.name
}