LinkedHashMap命令

时间:2013-08-06 20:08:35

标签: java map linkedhashmap

当如下图所示访问地图对象时,是否仍能保证订单?1/2?

    //.... 
    public void firstMethod(){
        Map<K,V> sortedMap=new LinkedHashMap<K,V>();
        sortedMap.put(h,g);
        //....

        Map<K,V> anotherMap=someOtherMethod(sortedMap);

        // order of anotherMap when read  ...2
    }

    public Map<K,V> someOtherMethod(Map<K,V> someMap){

         someMap.put(a,b);

         //order of someMap  when read ...1
         //.....

         return someMap;

    }
    //....

2 个答案:

答案 0 :(得分:3)

如果Map对象的具体实例是LinkedHashMap是。你用它做什么并不重要。该对象将保持其数据的有序性,如果您仅转换为Map或甚至Object或将其传递给方法,则实现不会更改。它将在内部保持LinkedHashMap。如果将其强制转换为Object,您可能不会再看到它。

假设您不知道源代码,唯一不能保证的是someOtherMethod返回您的LinkedHashMap。它也可以重新订购它。

除非指定方法,否则不应信任方法。但是,既然你知道这里的源代码,那么你可以保证它是你的LinkedHashMap的perferct顺序。

答案 1 :(得分:0)

根据docs

  

Map接口的哈希表和链表实现,具有可预测的迭代顺序。

因此,即使插入和删除了某些内容,订单也应该保留在您想要执行的任何操作中。