当元素是对象时,是否有一种更时髦的方法可以从另一个列表中减去一个列表?我认为可能有一种使用减号的方法,但无法弄清楚。这就是我所拥有的:
class item1 {
int foo
int getFoo(){return foo}
public item1(id_in){ foo = id_in }
}
def list1 = [new item1(10),new item1(11),new item1(13)]
def list2 = [new item1(11),new item1(12),new item1(14)]
// list3 = list2 - list1
def list3 = list2.findAll{ !(it.foo in list1.collect{it.foo}) }
// works
assert list3.collect{it.foo} == [12,14]
确实不错,但是我只是好奇是否有更好的方法。这个问题很相似,但是要找到交集(巧合的是,几个小时前才发布),但是我认为前提是对象具有ID属性。这就是我使用foo属性的原因-我不希望该解决方案需要一些与“ id”相关的grails式mojo(如果存在这种情况)。
您应该能够做到:
@groovy.transform.EqualsAndHashCode
class Item1 {
int foo
Item1(int too) {
this.foo = too
}
}
def list1 = [new Item1(10), new Item1(11), new Item1(13)]
def list2 = [new Item1(11), new Item1(12), new Item1(14)]
def foos = (list2 - list1).foo
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句