java:数组如果都一样

我有一个数组:

int tarningar[] = new int[5]; 

这有数字。 当所有数字都相同时,system.out.println(’ok’);

我怎样才能做到这一点?

 boolean flag = true; int first = tarningar[0]; for(int i = 1; i < 5 && flag; i++) { if (tarningar[i] != first) flag = false; } if (flag) System.out.println("ok"); 
 public class EqualArrayTest { public static boolean isAllEqual(int[] a){ for(int i=1; i 

与谷歌的番石榴:

 boolean allEqual = Sets.newHashSet(Ints.asList(tarningar)).size() == 1; 

所有值都相同 ,等于所有值等于任何选定值

因此,只需选择一个作为参考 ,并将此选择的值与所有其他值进行比较。

 import java.util.Arrays; /** * Don't take it serious. * But it works. */ public class Demo { public static boolean isAllSame(int... numbers) { int[] firstItemArray = new int[numbers.length]; Arrays.fill(firstItemArray, numbers[0]); return Arrays.equals(numbers, firstItemArray); } public static void main(String[] args) { System.out.println(isAllSame(1,1,1,1)); System.out.println(isAllSame(1,1,1,2)); } } 
 boolean isSame = true; for(int i = 1; i < tarningar.length; i++) { if (tarningar[i] != tarningar[0]) { isSame = false; } } if (isSame) { System.out.println("OK"); } 

在Java 8中使用流API:

 Set uniqueValues = Arrays.stream(tarningar) .boxed() .collect(Collectors.toSet()); boolean allEqual = uniqueValues.size() == 1; 

如果您使用Integer[]而不是int[] ,则Java 7及以前版本支持以下内容:

 // Integer[] tarninagr = ... Set uniqueValues = new HashSet<>(Arrays.asList(tarningar)); boolean allEqual = uniqueValues.size() == 1; 

没有循环的简单解决方案(固定数组长度为5):

 int v = tarningar[0]; if (tarningar[1] == v && tarningar[2] == v && tarningar[3] == v && tarningar[4] == v) { System.out.println("All the same!"); } 

这是一个更简洁的Java 8流示例:

 Arrays.stream(tarningar).distinct().count() == 1