在java循环中保存内存和CPU

时间:2018-01-24 19:52:54

标签: 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; 
        }
    }
    return false;
}

2 个答案:

答案 0 :(得分:1)

您可以使用依赖于哈希的Set<Integer>而不是依次迭代的数组。

static boolean exists(Set<Integer> ints, int k) {
     return ints.contains(k);
}

您可以将数组转换为Set并根据需要将其传递给方法多次:

Set<Integer> set = Arrays.stream(ints).boxed().collect(Collectors.toSet());
boolean isExist = exists(set, 15);
 ...
isExist = exists(set, 5005);
 ...
isExist = exists(set, 355);

答案 1 :(得分:1)

由于你的数组是按升序排列的,你可以做的一件事(我认为)是进行二分搜索而不是线性搜索。