当如下图所示访问地图对象时,是否仍能保证订单?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;
}
//....
答案 0 :(得分:3)
如果Map
对象的具体实例是LinkedHashMap
是。你用它做什么并不重要。该对象将保持其数据的有序性,如果您仅转换为Map
或甚至Object
或将其传递给方法,则实现不会更改。它将在内部保持LinkedHashMap
。如果将其强制转换为Object
,您可能不会再看到它。
假设您不知道源代码,唯一不能保证的是someOtherMethod
返回您的LinkedHashMap
。它也可以重新订购它。
除非指定方法,否则不应信任方法。但是,既然你知道这里的源代码,那么你可以保证它是你的LinkedHashMap
的perferct顺序。
答案 1 :(得分:0)