2

如下所示在位置 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;

    }
    //....
4

2 回答 2

3

Map如果您的对象的具体实例是LinkedHashMap肯定的。你用它做什么都没关系。Map该对象将保持其数据有序,并且如果您强制转换为 just或 evenObject或将其传递给方法,则实现不会改变。它将在内部保持一个LinkedHashMap. 如果您将其转换为 ,您可能不再看到它是一个Object

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

除非指定了这些内容,否则不应信任方法。但是由于您知道这里的源代码,因此您可以保证它是您LinkedHashMap的完美顺序。

于 2013-08-06T20:28:10.353 回答
0

根据文档

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

因此,即使在插入和删除内容之后,订单也应该持续到您想要对其执行的任何操作。

于 2013-08-06T20:14:05.183 回答