比较java中的数组和索引位置

时间:2013-04-12 08:32:05

标签: java arrays

在一次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};

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);

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