-6

在一次 Java 面试中,有人问我如何编写代码来比较 Array 元素,以找出有多少元素或索引相等以及有多少元素不相等?有没有一种方法可以在不使用 for 或 while 循环的情况下比较 Java 中的数组值?我想到的第一件事是Arrays类为我们提供了实用方法equals()deepEquals(),但最后我无法弥补,请用一个小例子告诉我如何解决这个问题?

 int[] i1 = new int[] {1,2,3,4};
 int[] i2 = new int[] {0,5,3,3};
4

3 回答 3

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++; 
  }
}
于 2013-04-12T08:36:05.127 回答
1

Disclaimer: Did not even bother to compile this and omit any error handling:

/*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};  
}
于 2013-04-12T08:44:41.690 回答
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);

然后你就会知道不相等的数字就是剩下的。

于 2013-04-12T08:37:50.010 回答