在Groovy中从另一个中减去一个对象列表的最佳方法是什么?
发布时间:2020-12-14 16:28:43 所属栏目:大数据 来源:网络整理
导读:当元素是对象时,是否有更古老的方法从另一个列表中减去一个列表?我认为可能有一种方法可以使用减去,但无法弄明白.这就是我所拥有的: class item1 { int foo int getFoo(){return foo} public item1(id_in){ foo = id_in }}def list1 = [new item1(10),new
当元素是对象时,是否有更古老的方法从另一个列表中减去一个列表?我认为可能有一种方法可以使用减去,但无法弄明白.这就是我所拥有的:
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] 这真的很不错,但如果有更好的方法,我只是好奇. This question非常相似,但寻找交叉点(巧合的是,几小时前刚刚发布),但我认为预先假定对象具有ID属性.这就是我使用我的foo属性的原因 – 我不希望解决方案需要一些与“id”相关的grails-like 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |