Java LinkedHashMap订单
在位置1和2访问地图对象时,顺序是否仍有保证Java LinkedHashMap订单,java,map,linkedhashmap,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); // o
//....
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;
}
//....
/。。。。
公共方法(){
Map sortedMap=new LinkedHashMap();
分类地图放置(h,g);
//....
Map anotherMap=someOtherMethod(sortedMap);
//读取时anotherMap的顺序…2
}
公共映射someOtherMethod(映射someMap){
someMap.put(a,b);
//读取时的someMap顺序…1
//.....
返回someMap;
}
//....
根据:
哈希表和链表实现的映射接口,具有可预测的迭代顺序
因此,即使在插入和删除了一些东西之后,无论您想对其执行什么操作,顺序都应该保持不变 如果
Map
对象的具体实例是LinkedHashMap
yes。你用它做什么并不重要。如果您强制转换为Map
或甚至object
或将其传递给方法,对象将保持其数据有序,并且实现不会更改。它将在内部保持一个LinkedHashMap
。如果将它强制转换为对象
,则可能不再看到它是一个
假设您不知道源代码,唯一不能保证的是someOtherMethod
返回您的LinkedHashMap
。它还可以重新订购
方法不应该被信任,除非它指定了这些东西。但是既然你知道这里的源代码,你就可以保证它是你的
LinkedHashMap
。嗯,什么?你的问题有点模糊…为什么不呢LinkedHashMap
没有做任何神奇的事情。@LouisWasserman这也许是个愚蠢的问题,我不确定将sortedMap
转换为“Map”的效果,以及从someOtherMethod
返回的类型是Map
@下面Zapl的回答澄清了我的疑问。谢谢。这消除了我的疑虑。我不确定当强制转换到Map
时会产生什么效果,即使具体类型是LinkedHashMap
。