LinkedHashMap在所有Key中包含相同的值

时间:2014-01-12 17:19:07

标签: java android linkedhashmap

我是使用LinkedHashMap的新手,我试图通过使用 .put 方法在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   
    }

提前谢谢

1 个答案:

答案 0 :(得分:3)

Arrays.copyOf(arrayKo2)时使用arrayKo2代替put

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

否则Map的每个项目都将引用相同的数组,即您正在排序的数组。