2014-01-12 39 views
-1

在使用LinkedHashMap時,我嘗試使用方法.put將數組的每個實例(冒泡排序算法)存儲在LinkedHashMap中,但是當我嘗試檢索內容的linkedhashmap,我得到的是一堆最終排序數組的副本。如何將數組的所有實例(發生)存儲在LinkedHashMap中? 請賜教LinkedHashMap在所有密鑰中都包含相同的值

這是我的代碼:

private LinkedHashMap<String,double[]> sortBubbleAscend(double[] arrayKo2) { 

    double temp = 0; 
    int count = 0; 

    LinkedHashMap<String, double[]> map = new LinkedHashMap<String, double[]>(); 

    for(int i=0; i<arrayKo2.length; i++) 
    { 
     for(int j=0;j<arrayKo2.length-1;j++) 
     { 
      if(arrayKo2[j] > arrayKo2[j+1]) 
      { 
       temp=arrayKo2[j]; 
       arrayKo2[j]=arrayKo2[j+1]; 
       arrayKo2[j+1]=temp; 
      } 
      count++; 
      map.put("" + count, arrayKo2);  
     }  
    } 

    return map; 
} 

而且這是我用來監控的LinkedHashMap的值的代碼

 for (Entry<String, double[]> entry : map.entrySet()) 
    { 
     double[] value = entry.getValue(); 
     for(int p=0; p < value.length; p++) 
     { 
      Log.d("TEST", "Value: "+ value[p]); 
     } 
     Log.d("TEST", "----------------"); //printing line to separate each instance of the array 
    } 

預先感謝您

回答

3

使用Arrays.copyOf(arrayKo2)而不是arrayKo2put

map.put("" + count, Arrays.copyOf(arrayKo2, arrayKo2.length)); 

否則Map中的每一項都會引用相同的數組,即您正在排序的數組。

+0

非常感謝你@heraldK你我的救命恩人,有很多優秀的程序員喜歡你的好東西,可以幫助新手和我一樣^ _ ^ – user3175814

相關問題