如何获得整数范围但排除一些数字?

时间:2019-05-14 00:08:34

标签: java range

我需要创建一个整数数组,该整数数组将包含0到53之间的所有数字,但是我想从该数组中排除某些整数。用Java有什么功能吗?

我有一个包含排除项的数组。这背后没有逻辑(实际上有逻辑,但是我不知道如何表达),因此我创建了一个数组来指定:

int[] exclusions = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};

我看到看到an example与我想做的事情类似,但是在C#中(这个问题是关于一个随机数,这不是我想要的,而是类似的东西。)

2 个答案:

答案 0 :(得分:0)

您可以创建一组要排除的数字,并过滤IntStream.range产生的数字:

Set<Integer> exclusions = new HashSet<>();
// add numbers to set
...
int[] numbers = IntStream.range(0,53)
    .filter(n -> !exclusions.contains(n))
    .toArray();

答案 1 :(得分:0)

您可以通过多种方式进行操作。首先是使用IntStream的concat功能。以下产生了0-5、10-15和20-25的列表。

      int[] vals = IntStream.concat(
            IntStream.concat(IntStream.range(0, 6), IntStream.range(10, 16)),
            IntStream.range(20, 26)).toArray();
      System.out.println(Arrays.toString(vals));

您还可以仅列出要排除的数字。此示例排除了过滤器列表中的那些。

      int[] vals2 = IntStream.range(0, 54).filter(
            a -> !List.of(10, 20, 30, 40).contains(a)).toArray();
      System.out.println(Arrays.toString(vals2));