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

问题描述 投票:6回答:1

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从名单中获取随机元素?
  2. 我可以使用groovy的集合属性创建一个包含10个随机名称的人的列表(以简单的方式)吗?
list grails random groovy
1个回答
13
投票

只需使用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
}
© www.soinside.com 2019 - 2024. All rights reserved.