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