不知道如何有效地处理这件事。我有一个数组列表,如下所示:
[[name:BOB, cost:225.99, ticket:ECONOMY, stops:1], [name:JIM, cost:331.99, ticket:PREMIUM, stops:0], [name:SAL, cost:331.99, ticket:ECONOMY, stops:0], [name:PETE, cost:456.99, ticket:PREMIUM, stops:0]]这只是个例子。
我想要的是这个数据结构(不管是什么类型的,字符串都可以,它包含:
并不是所有这些类别都有数组列表中的数据,如果不合适,只需忽略它。
做这件事最简单的方法是什么?任何帮助都非常感谢。
发布于 2018-07-24 14:32:46
您可以使用findAll()和min()集合函数的组合。第一条允许您使用谓词筛选所有条目的列表,第二条允许您获得一个特定字段的最小值的条目。考虑以下例子:
def data = [
[name: 'BOB', cost: 225.99, ticket: 'ECONOMY', stops: 1],
[name: 'JIM', cost: 331.99, ticket: 'PREMIUM', stops: 0],
[name: 'SAL', cost: 331.99, ticket: 'ECONOMY', stops: 0],
[name: 'PETE', cost: 456.99, ticket: 'PREMIUM', stops: 0]
]
// 1 entry with 0 stops, ticket type PREMIUM, that has the cheapest cost
def result = data.findAll { it.stops == 0 && it.ticket == 'PREMIUM' }.min { it.cost }
println result.inspect()输出:
['name':'JIM', 'cost':331.99, 'ticket':'PREMIUM', 'stops':0]此示例演示如何使用findAll()和min()来实现您的目标:
findAll { it.stops == 0 && it.ticket == 'PREMIUM' }将所有条目的列表缩减为具有0停站和票务类型溢价的条目。min { it.cost }以最小的cost值从筛选后的列表返回单个条目。您可以简单地应用相同的策略来提取所有剩余的信息,并将其存储在任何您喜欢的结构中。
希望能帮上忙。
https://stackoverflow.com/questions/51500941
复制相似问题