gpt4 book ai didi

collections - 在数组列表中收集 findall

转载 作者:行者123 更新时间:2023-12-01 08:59:50 28 4
gpt4 key购买 nike

我正在使用 groovy 并且我有一个集合:

  • 第 1 人:年龄 - 1,体重 - 25
  • 第 2 人:年龄 - 2,体重 - 20
  • 第 3 人:年龄 - 3,体重 - 25

我需要找到所有年龄或体重在名为 getValidAgeForSchool() 或 getValidWeightForSchool() 的方法返回的有效年龄/体重列表中的人。年龄 [2,3] 或体重 [20,25]

我知道有这样的东西(也不行)

persons.findAll{ it.age == 2 || it.weight == 20}

但我怎么说(比如 IN 子句)

persons.findAll {it.age in [2,3] || it.weight 在 [20,25]} 中。

我也试过这个(暂时忽略重量)但没有在应该返回的时候返回列表persons.age.findAll{ 它 == 2 ||它 == 3}

谢谢。

最佳答案

你的代码有效:

def people = [
[ id: 1, age: 1, weight: 25 ],
[ id: 2, age: 2, weight: 20 ],
[ id: 3, age: 3, weight: 25 ]
]

// This will find everyone (as everyone matches your criteria)
assert people.findAll {
it.age in [ 2, 3 ] || it.weight in [ 20, 25 ]
}.id == [ 1, 2, 3 ]

如果您有这样的实例列表,它也可以工作:

class Person {
int id
int age
int weight
}

def people = [
new Person( id: 1, age: 1, weight: 25 ),
new Person( id: 2, age: 2, weight: 20 ),
new Person( id: 3, age: 3, weight: 25 )
]

我假设你的问题是你有 weight 作为 double 或其他东西?

如果 weight 是 double,您需要这样做:

people.findAll { it.age in [ 2, 3 ] || it.weight in [ 20d, 25d ] }.id

但是小心,这是在做双重等式比较,所以如果你对权重做任何算术,你可能会成为舍入和准确性错误的牺牲品

关于collections - 在数组列表中收集 findall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19791756/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com