Groovy方法从列表中获取随机元素

7d7tgy0s  于 2023-04-11  发布在  其他
关注(0)|答案(1)|浏览(326)

Groovy在管理集合方面非常强大。我有一个这样的列表:

def nameList = ["Jon", "Mike", "Alexia"]

我想做的是迭代10次,从第一个列表中随机选择10个人。

10.times{
    Person person = new Person(
    name: nameList.get() //I WANT TO GET A RANDOM NAME FROM THE LIST
    )
}

这不起作用有两个明显的原因,我没有在我的nameList.get中添加任何索引,我没有创建10个不同的Person对象。
1.如何使用groovy从我的名字列表中获取一个随机元素?
1.我可以使用groovy的collections属性创建一个随机名字的10人列表吗(用一种简单的方法)?

5kgi1eie

5kgi1eie1#

使用Java方法Collections.shuffle(),如

class Person {
    def name
}

def nameList = ["Jon", "Mike", "Alexia"]
10.times {
    Collections.shuffle nameList // or with Groovy 3: nameList.shuffle()
    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
}

相关问题