示例1:检查Int数组是否包含给定值
public class Contains {
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5};
int toFind = 3;
boolean found = false;
for (int n : num) {
if (n == toFind) {
found = true;
break;
}
}
if(found)
System.out.println(toFind + " is found.");
else
System.out.println(toFind + " is not found.");
}
}
输出
3 is found.
在上面的程序中,我们有一个存储在变量num中的整数数组。同样,要查找的数字存储在toFind中 。
现在,我们使用for-each循环遍历num的所有元素,并分别检查toFind是否等于n 。
如果是的话,我们设置发现 true
从环和休息。如果不是,我们转到下一个迭代。
示例2:使用Stream检查数组是否包含给定值
import java.util.stream.IntStream;
public class Contains {
public static void main(String[] args) {
int[] num = {1, 2, 3, 4, 5};
int toFind = 7;
boolean found = IntStream.of(num).anyMatch(n -> n == toFind);
if(found)
System.out.println(toFind + " is found.");
else
System.out.println(toFind + " is not found.");
}
}
输出
7 is not found.
在上面的程序中,我们没有使用for-each循环,而是将数组转换为IntStream
并使用其anyMatch()
方法。
anyMatch()
方法采用谓词,表达式或返回布尔值的函数 。在我们的例子中,谓词将流中的每个元素n与toFind进行比较,并返回true
或false
。
如果元素n中的任何一个返回true
,则found也将设置为true
。
示例3:检查数组是否包含非原始类型的给定值
import java.util.Arrays;
public class Contains {
public static void main(String[] args) {
String[] strings = {"One", "Two", "Three", "Four", "Five"};
String toFind = "Four";
boolean found = Arrays.stream(strings).anyMatch(t -> t.equals(toFind));
if(found)
System.out.println(toFind + " is found.");
else
System.out.println(toFind + " is not found.");
}
}
输出
Four is found.
在上面的程序中,我们使用了非原始数据类型String
并使用Arrays
的stream()
方法首先将其转换为流,并使用anyMatch()
来检查数组是否包含给定值toFind 。