在java循环中节省内存和CPU
我编写的这段(显然)代码运行良好,但出于测试目的,我应该通过节省CPU周期和尽可能多的内存,使其在合理的时间内适用于“一百万”大小的阵列。在java循环中节省内存和CPU,java,loops,memory,optimization,cpu,Java,Loops,Memory,Optimization,Cpu,我编写的这段(显然)代码运行良好,但出于测试目的,我应该通过节省CPU周期和尽可能多的内存,使其在合理的时间内适用于“一百万”大小的阵列。 有什么建议吗? !!! 阵列按升序排列 import java.util.Arrays; class A { static boolean exists(int[] ints, int k) { for(int integer : ints){ if(integer == k){ return true;
有什么建议吗?
!!! 阵列按升序排列
import java.util.Arrays;
class A {
static boolean exists(int[] ints, int k) {
for(int integer : ints){
if(integer == k){
return true;
}
}
return false;
}
您可以使用依赖于哈希的集,而不是顺序迭代的数组。
static boolean exists(Set<Integer> ints, int k) {
return ints.contains(k);
}
由于数组是按升序排列的,所以(我认为)可以做的一件事是进行二进制搜索,而不是线性搜索。如果您应该使用数组,则可以使用二进制搜索,否则可以使用hash。这可能会对您有所帮助:int index=Arrays.binarySearch(新的int[]{1,2,4},2)代码>
Set<Integer> set = Arrays.stream(ints).boxed().collect(Collectors.toSet());
boolean isExist = exists(set, 15);
...
isExist = exists(set, 5005);
...
isExist = exists(set, 355);