Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java循环中节省内存和CPU_Java_Loops_Memory_Optimization_Cpu - Fatal编程技术网

在java循环中节省内存和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;

我编写的这段(显然)代码运行良好,但出于测试目的,我应该通过节省CPU周期和尽可能多的内存,使其在合理的时间内适用于“一百万”大小的阵列。
有什么建议吗?
!!! 阵列按升序排列

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);