简化与数组的比较

195*_*950 4 java arrays comparison

我得到了这个简单的代码,我想简化while循环中数组的比较

int[] numbers = new int[7];

    Random rand = new Random();
    for(int i = 0; i < 7; i++) {            
        int number = rand.nextInt(46);
        while(number == numbers[0] || number == numbers[1] || number == numbers[2] || number == numbers[3] ||
                number == numbers[4] || number == numbers[5] || number == numbers[6]) {
            number = rand.nextInt();
        }
        numbers[i] = number;
    }
    for(int i = 0; i < numbers.length; i++) {
        System.out.println(numbers[i]);
    }
Run Code Online (Sandbox Code Playgroud)

我想找到一种简化这部分的方法:

while(number == numbers[0] || number == numbers[1] || number == numbers[2] || number == numbers[3] ||
                number == numbers[4] || number == numbers[5] || number == numbers[6])
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Joh*_*uhn 5

一个简单的解决方案是使用Java 8流.
使用流它看起来像这样:

int[] numbers = new Random().ints(1, 46).distinct().limit(6).toArray();
Run Code Online (Sandbox Code Playgroud)

感谢Elliot,我没有意识到这个数字0不会被选中,因为所有的一开始都是0.

  • 我认为应该是`ints(1,46)` - OP有防范'0'(因为那是'数字'最初填充的东西). (3认同)