检查数组是否包含特定值

时间:2018-03-20 07:15:21

标签: java

我知道如果我想检查数组是否包含某个值,我应该使用Arrays.asList(arrayName).contains(valueName)。 但是如何检查该值是否存在?起初我只是想放!在前面像:

!Arrays.asList(arrayName).contains(valueName)

但这似乎不起作用。

我甚至尝试过写这样的if语句:

if (Arrays.asList(arrayName).contains(valueName)==false)

但这似乎也不起作用。

以下是代码:

public int[] duplikati(int[] tabela){
    int len = tabela.length;
    int c = 0;
    int[] count = new int[len];
    for (int i=0;i<len;i++){
        if (Arrays.asList(count).contains(tabela[i])==false){
            c++;
        }
    }
    int[] result = new int[c];
    int d = 0;
    for (int j=0;j<len;j++){
        if (Arrays.asList(result).contains(tabela[j])==false){
            System.out.print(tabela[j]+" ");
            result[d] = tabela[j];
            d++;
        }
    }
    return result;
}

2 个答案:

答案 0 :(得分:1)

在这种特殊情况下,当您将一个基本类型数组传递给Arrays.asList时,您将获得一个带有单个元素的List,这是提供的数组。

所以,当你这样做时:

Arrays.asList(arrayName).contains(valueName)

来电Arrays.asList(arrayName)将返回List<int[]>,然后当您致电contains时,valueName将被设置为Integer,然后将其与列表中的元素。因为int[]永远不会等于整数值,contains调用将始终返回false

解决方案1 ​​ - 将数组的类型从int[]更改为Integer[],然后一切都应该按预期工作。

解决方案2 - 假设您由于某种原因不想更改数组的类型,那么您可以这样做:

final int index = i;
if(Arrays.stream(count).noneMatch(e -> e == tabela[index])){...}
在for循环中

如果noneMatch方法有帮助,您可以将!Arrays.asList(someArray).contains(someValue)方法视为final int index = i; if(Arrays.stream(count).anyMatch(e -> e == tabela[index])){...}

同样,您可以检查数组是否包含以下元素:

anyMatch

如果Arrays.asList(someArray).contains(someValue)方法有帮助,您可以将create-react-native-app方法视为React Navigation

答案 1 :(得分:0)

您可以使用Java 8 stream api,如下所示

Integer arr[]=new Integer[]{1,2,30,61};
System.out.println(Arrays.asList(arr).stream().noneMatch(element>element==10));

您可以通过以下链接进行解释 noneMatch()