我需要创建一个整数数组,该整数数组将包含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#中(这个问题是关于一个随机数,这不是我想要的,而是类似的东西。)
答案 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));