Groovy 将 2 个对象列表相交
Groovy Intersect 2 lists of Objects
我正在尝试将 2 个 POGO 列表相交。
我需要在POGO上实现哪些方法/接口?
intersect 方法的文档只说明它必须是一个 Iterable。
即
list1 = createPOGOList()
list2 = createPOGOList()
list3 = list1.intersect(list2)
其中 list1 和 list2 包含 POGO。
您最安全的选择是 Comparable
,而获得 "free" 的最简单方法是通过 Sortable
AST 转换。例如
@groovy.transform.Sortable(includes=['id'])
class Pogo {
Long id
}
def n = { new Pogo(id:it) }
assert [n(1),n(2)].intersect([n(1)])*.id == [1]
我正在尝试将 2 个 POGO 列表相交。
我需要在POGO上实现哪些方法/接口?
intersect 方法的文档只说明它必须是一个 Iterable。
即
list1 = createPOGOList()
list2 = createPOGOList()
list3 = list1.intersect(list2)
其中 list1 和 list2 包含 POGO。
您最安全的选择是 Comparable
,而获得 "free" 的最简单方法是通过 Sortable
AST 转换。例如
@groovy.transform.Sortable(includes=['id'])
class Pogo {
Long id
}
def n = { new Pogo(id:it) }
assert [n(1),n(2)].intersect([n(1)])*.id == [1]