如何从数组中删除索引为N的倍数的项目

时间:2015-02-12 23:25:21

标签: java arrays

我有一个简单的代码,可以根据用户输入创建一个数组:

import java.util.Scanner;

class Main {
    Scanner in = new Scanner(System.in);
    int NumOfValues = in.nextInt();

    int [] array = new int[NumOfValues];
}

现在我想获取n的倍数的所有索引并删除它们。例如:array[n]array[2n]等等。感谢所有帮助。

2 个答案:

答案 0 :(得分:0)

我不确定你是否意味着删除n的倍数的条目或n的倍数的索引?

如果前者和你可以使用Java 8,那么使用流来做这件事是微不足道的:

array = Arrays.stream(array)
    .filter(i -> i % n != 0)
    .toArray();

如果您不熟悉流,那么这句话说:将我的数组转换为整数流,只过滤那些不是n的倍数(即模数n不为零)的数组,然后收集在一个新阵列中流。

如果是后者(即删除每个第n项),那么你仍然可以使用流,但它有点模糊:

array = IntStream.range(0, array.length)
    .filter (i -> i % n != 0)
    .map(i -> array[i])
    .toArray();

这实际上产生了一个表示索引的整数流,过滤它们,映射到数组的相应项并转换回新数组。

答案 1 :(得分:0)

首先,您的代码不完整。您的代码至少需要一个函数(可能是main())。此外,您应该将给定的变量移动到此函数中(至少大多数)。在您询问有关删除值之前,您应首先显示如何填充数组