如何检查数组中的所有值是否具有特定值?

在Java中,给定一个值数组(比如整数),有没有办法有效地检查它们是否都具有某个值?

例如,使用整数数组,例如:

int[] numbers = {2, 2, 2, 2, 2, 2, 2}; 

并且只有当所有这些都是2时才需要执行操作,是否有比这样做更有效的方法:

 if (numbers[1] == 2 && numbers[2] == 2 && numbers[3] == 2 && …) 

我知道有很多方法可以在C ++中实现这一点但是Java呢?

适用于所有Java版本:

 public static boolean allMatch(int[] array, int value) { for (int i = 0; i < array.length; i++) if (array[i] != value) return false; return true; } 

使用这样:

 if (allMatch(numbers, 2)) { // do something } 

对于Java 8+(从Bhashit Parikh的回答中窃取):

 if (Arrays.stream(numbers).allMatch(x -> x == 2)) { // do something } 

或者,如果使用java 8,您可以执行以下操作:

 if(Arrays.stream(numbers).allMatch(x -> x == 2)) { // do something } 

基本上,您可能想要处理集合/数组的所有事情都可以通过Streams非常简洁地完成。

 public static boolean AreAllEqual(int[] numbers) { for(int i = 1; i < numbers.length; i++) { if(numbers[0] != numbers[i]) { return false; } } return true; } 

在这里使用函数将节省大量的编码时间,并且还允许您传递任意大小的数组(因为您根据其长度迭代数组)。