跳过for循环中的迭代

时间:2013-03-06 01:33:26

标签: java algorithm collections iteration

如何改进此算法以使用动态验证源?

public static void main(String[] args) 
{
    int[] exclude = {1, 4, 7};

    for(int i= 0 ; i < 10; i++)
    { 
        if(i != 1 || i != 4 || i != 7);
        {
            continue;
        }
    }
        System.out.println(i);
    }
}

意思是,我想要代替if循环内的for,我希望收到一个列表并验证必须排除元素的内容,可能是这样的:

        if(Arrays.asList(exclude).contains(i))

只是为了知道如何去做。我觉得它将来可能会有用。基本上我想使用数组跳过循环中的某些迭代。

如何

2 个答案:

答案 0 :(得分:0)

这个电话:

Arrays.asList(exclude)

实际上它会创建一个List,这不是你想要的。如果您声明将数组排除为Integer数组,它将起作用:

public static void main(String[] args) 
{
    Integer[] exclude = {1, 4, 7};

    for(int i= 0 ; i < 10; i++)
    {
       if(!Arrays.asList(exclude).contains(i))
       {
           System.out.println(i);
       }
    }
}

问题是,您为此Arrays.asList提供了int[]。编译器必须决定它是否应该将泛型参数T解释为int或int []。但它无法选择int,因为您不能将整数类型作为泛型类型。它可以选择Integer,但这意味着转换,因此int[]不是直接的。所以T是int[],它只创建一个List<int[]>,只有你提供的数组作为元素。当然,没有整数等于整个数组。这就是为什么要打印所有整数的原因。

答案 1 :(得分:-1)

好像你已经知道了吗?

public static void main(String[] args) 
{
    int[] exclude = {1, 4, 7};

    for(int i= 0 ; i < 10; i++)
    {
       if(Arrays.asList(exclude).contains(i))
       {
           i++;
       }
       else 
       {
           System.out.println(i);
       }
    }
}