在一次java访谈中,我被问到你将如何编写代码来比较Array元素,以找出有多少元素或索引是等于的,有多少元素是不相等的?有没有办法可以在不使用for或while循环的情况下比较Java中的Array值?我想到的第一件事就是Arrays类为我们提供了实用方法equals()
和deepEquals()
,但最后我无法弥补,请用一个小例子告诉我如何解决这个问题问题
int[] i1 = new int[] {1,2,3,4};
int[] i2 = new int[] {0,5,3,3};
答案 0 :(得分:3)
像
这样的东西notEqualCount += Math.abs(i1.length - i2.length);
for(int i=0; i<i1.length && i < i2.length;i++){
if(i1[i]==i2[i]){
equalCount++;
}
else{
notEqualCount++;
}
}
答案 1 :(得分:1)
免责声明:甚至没有费心去编译它并省略任何错误处理:
/*Returns the equal count in int[0] and nonEqualCount in int[1] of the result*/
public static int[] findEqualAndNotEqual(Integer firstArray, Integer secondArray){
Set<Integer> set = new HashSet<Integer>(Arrays.asList(firstArray));
int equalCount = 0;
int nonEqualCount = 0;
for(Integer num:secondArray){
if(set.contains(num)){
equalCount++;
}
else{
nonEqualCount++;
}
}
return new int[]{equalCount, nonEqualCount};
}
答案 2 :(得分:0)
你可以遍历数组。类似的东西:
int[] array1 =new int[] {1,2,3,4};
int[] array2 = new int[] {0,5,3,3};
int numberOfEqualElements = 0;
for (int i=0; i<array1.length; i++) {
if (array1[i] == (array2[i])) {
numberOfEqualElements += 1;
}
}
system.out.println("The number of elements that are equal is " + numberOfEqualElements);
然后你会知道不相等的数字是剩下的。