从另一个性能中减去一个ArrayList
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从另一个性能中减去一个ArrayList相关的知识,希望对你有一定的参考价值。
我想从另一个中减去一个ArrayList
@ToString
@EqualsAndHashCode
class Person
{
PersonGender gender
String name
String surname
}
static def substractList(ArrayList<Person> listOne, ArrayList<Person> listTwo) {
listOne.minus listTwo
// listOne has 200k elements
// listTwo has 170k elements
}
代码已运行40分钟,但无法完成。 如何让执行更快?
答案
Person
是否实施Comparable
?如果是这样,Groovy将进行1,046,089次操作。如果没有,它将采取较慢的路径并进行34,000,000,000次操作(see the code for minus here)
所以你应该能够通过使Person
实现Comparable
来使它快34,000倍Groovy然后将使用TreeSet;将所有listOne
添加到其中,然后删除所有listTwo
如果你不能使它具有可比性...嗯......你能预先对列表进行排序吗?
如果是这样,我们可能会想出一个同时遍历两个列表的算法......这可能会更快......
以上是关于从另一个性能中减去一个ArrayList的主要内容,如果未能解决你的问题,请参考以下文章