【发布时间】:2011-12-27 13:34:35
【问题描述】:
我写了下面的代码来比较具有相同元素但顺序不同的数组。
Integer arr1[] = {1,4,6,7,2};
Integer arr2[] = {1,2,7,4,6};
例如,上面的数组相等,因为它们相同的元素 1,2,4,6,7。如果您对更大的数组有更好的代码,请分享。
编辑 如果从两个数组中获取唯一元素并且它们看起来相同,那么数组也应该相等。如何在不使用任何集合类的情况下编写代码。 例如:arr1={1,2,3,1,2,3} arr2={3,2,1} 方法应返回 true(=两个数组相同)。
package com.test;
public class ArrayCompare {
public boolean compareArrays(Integer[] arr1, Integer[] arr2){
if(arr1==null || arr2==null){
return false;
}
if(arr1.length!=arr2.length){
return false;
}
Integer[] sortedArr1=sortArray(arr1);
Integer[] sortedArr2=sortArray(arr2);
for(int i=0;i<sortedArr1.length-1;i++){
if(sortedArr1[i]!=sortedArr2[i]){
return false;
}
}
return true;
}
public void swapElements(Integer[] arr,int pos){
int temp=arr[pos];
arr[pos]=arr[pos+1];
arr[pos+1]=temp;
}
public Integer[] sortArray(Integer[] arr){
for(int k=0;k<arr.length;k++){
for(int i=0;i<arr.length-1;i++){
if(arr[i]>arr[i+1]){
swapElements(arr,i);
}
}
}
return arr;
}
public static void main(String[] args) {
Integer arr1[] = {1,4,6,7,2};
Integer arr2[] = {1,2,7,4,6};
ArrayCompare arrComp=new ArrayCompare();
System.out.println(arrComp.compareArrays(arr1, arr2));
}
}
【问题讨论】: