当地图对象被访问时,订单是否仍然保证,如下面所示,位置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;
}
//....发布于 2013-08-06 20:28:10
如果Map对象的具体实例是LinkedHashMap,则为是。不管你怎么处理它。对象将保持其数据的有序性,如果只转换为Map或甚至Object,或者将其传递给方法,则实现不会改变。它将在内部保留一个LinkedHashMap。如果将其转换为Object,您可能不再看到它是一个。
假设您不知道源代码,唯一不能保证的是someOtherMethod返回您的LinkedHashMap。它也可以重新订购它。
方法不应该被信任,除非它指定了这些事情。但是,由于您知道这里的源代码,所以您可以保证它是您的LinkedHashMap按顺序排列。
发布于 2013-08-06 20:14:05
根据文档:
哈希表和映射接口的链接列表实现,具有可预测的迭代顺序。
因此,即使在事物被插入和移除之后,这个顺序也应该在你想要做的任何事情中持续存在。
https://stackoverflow.com/questions/18089502
复制相似问题