Как я могу получить диапазон целых чисел, но исключить некоторые числа? - PullRequest
0 голосов
/ 14 мая 2019

Мне нужно создать массив целых чисел, который будет включать все числа от 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};

Я видел пример чего-то похожего на то, что я хочу сделать, но в C # (этот вопрос касается случайного числа, которое не то, что я хочу, но похоже).

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Вы можете сделать это несколькими способами. Сначала используется функция concat IntStream. Ниже приводится список 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));
0 голосов
/ 14 мая 2019

Вы можете создать набор чисел, которые вы хотите исключить, и отфильтровать числа, полученные с помощью IntStream.range:

Set<Integer> exclusions = new HashSet<>();
// add numbers to set
...
int[] numbers = IntStream.range(0,53)
    .filter(n -> !exclusions.contains(n))
    .toArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...