我知道如果我想检查数组是否包含某个值,我应该使用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;
}
答案 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()