Java 用于阵列比较以提高性能的替代方案
我有一个Java 用于阵列比较以提高性能的替代方案,java,android,performance,cpu-usage,Java,Android,Performance,Cpu Usage,我有一个线程,它每一秒比较两个长数组列表(显然一个数组列表发生了变化,所以我进行了比较)。性能降低,CPU利用率大幅提高。我想知道一种提高CPU性能的解决方案。什么是好办法?除了使用数组列表,还有其他方法吗。您可以保留您的ArrayList并只存储它是否已更改。因此,如果您更改它,请执行类似于boolean changed=true的操作。然后,当您想要检查时,您可以只检查if(changed),而不是遍历整个列表。然后记得每次检查时都要设置changed=false。Java Collecti
线程
,它每一秒比较两个长数组列表
(显然一个数组列表发生了变化,所以我进行了比较)。性能降低,CPU利用率大幅提高。我想知道一种提高CPU性能的解决方案。什么是好办法?除了使用数组列表,还有其他方法吗。您可以保留您的ArrayList并只存储它是否已更改。因此,如果您更改它,请执行类似于boolean changed=true
的操作。然后,当您想要检查时,您可以只检查if(changed)
,而不是遍历整个列表。然后记得每次检查时都要设置changed=false
。Java Collections框架包含排序ArrayList(以及与此相关的其他集合)的方法,这些方法的执行效率将高于冒泡排序的实现,即O(n^2),最坏情况下,您将能够实现O(n log n)使用集合
用途如下:
Collections.sort(yourArrayList)
这里有一个用法示例:
这取决于您正在比较什么以及您正在使用什么算法进行比较?您能描述一下您试图通过比较实现什么,以及两个列表中有什么数据吗?我使用的是冒泡排序算法,两个arraylist都包含相同数据类型的对象。您为什么要使用冒泡排序?内置排序函数的加载速度会更快。你能提供关于“内置排序函数”的详细信息吗?但如果只是想更改数据呢?在这种情况下,需要进行比较?问题是我没有更改列表,而是从系统中检索列表。我只是将旧列表与新1进行比较,以检查是否存在错误event@AbhishekB:哦,好的。问题中没有提到这一点。@AbhishekB:为什么不使用观察者模式?这意味着,如果有任何更改,它将自动用该值更新观察者。