我寫下面的代碼來比較具有相同元素但不同順序的數組。比較具有不同順序的相同元素的數組
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));
}
}
感謝。我將使用內置的排序算法。 – crazyTechie
@abhishek:看看我的編輯 - 根據Itay的回答,沒有必要建立列表,但顯然這也可以。 –
除非有非常迫切的需求,否則重新發明車輪並不是一個好主意。您可以使用Java集合來完成作業,因爲它們的寫作效率更高。如果你確信,那麼我相信你應該再次看看@Jon Skeet提出的建議。 – Drona