有沒有更好的方法來找到更小的標記最接近的對象?Groovy基於成員屬性查找最大匹配列表成員的方法
class Prop implements Comparable {
BigDecimal marker
String value
int compareTo(other) {
return marker <=> other.marker
}
}
def props = [new Prop(marker: 0G, value: "1st"),
new Prop(marker: 20G, value: "2nd"),
new Prop(marker: 30G, value: "3rd"),
new Prop(marker: 40G, value: "4th"),
new Prop(marker: 50G, value: "5th"),
new Prop(marker: 100G, value: "6th"),
new Prop(marker: 1000G, value: "7th")]
def whereAmI = 44G
def here = props.findAll{it.marker <= whereAmI}.max()
輕微這裏的問題是,你是返回一個Double而不是道具 – Micor
這將是比較容易修改。對不起,我錯過了。基本上,用列表中的第一項替換初始注入,並在'max.marker'上進行比較。我會更新這個例子。 – OverZealous
好吧,我做了一點不同,並注入空,所以你可以知道你是否在列表的開始。希望有幫助。 – OverZealous