Java 具有添加效果的ConcurrentHashMap
我刚刚尝试使用Java 具有添加效果的ConcurrentHashMap,java,Java,我刚刚尝试使用ConcurrentHashMap获得添加效果,但是元素顺序是混合的。 代码就像一个 ConcurrentHashMap<String,String>h=new ConcurrentHashMap<String,String>(); for(int i=0; i<10; i++) { h.put(""+Math.random(), ""+i); }
ConcurrentHashMap
获得添加效果,但是元素顺序是混合的。
代码就像一个
ConcurrentHashMap<String,String>h=new ConcurrentHashMap<String,String>();
for(int i=0; i<10; i++)
{
h.put(""+Math.random(), ""+i);
}
Iterator<String> iterator=h.values().iterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
。。。所以我的问题是
如果键是某个随机字符串,ConcurrentHashMap是否有办法获得原始元素的顺序
谢谢使用它将保留插入顺序
哈希表和链表实现的映射接口,具有可预测的迭代顺序
和使用
Collections.synchronizedMap(mapInstance)
看
Map-Map=Collections.synchronizedMap(新LinkedHashMap());
保持插入顺序
哈希表和链表实现的映射接口,具有可预测的迭代顺序。此实现与HashMap的不同之处在于,它维护一个贯穿其所有条目的双链接列表。此链表定义了迭代顺序,通常是将关键帧插入贴图的顺序(插入顺序)。请注意,如果将键重新插入地图,则插入顺序不受影响
使用ConcurrentHashMap有什么原因吗?你打算从多个线程同时使用它吗?你把double和integer放进一个映射中还有什么原因吗?@amit你是对的。我对多线程很感兴趣抱歉,我没有完全理解你,你想用HashMap保持秩序吗?@JigarJoshi:他正在寻找一个并发的安全实现
LinkedHashMap
没有提供它。@Jigar Joshi感谢您的回复。我想用ConcurrentHashMap维持秩序。使用整数(迭代)键进行测试会得到肯定的结果,但随机字符串键会给出混合顺序。所以我想知道是否还有其他最佳方法?你的意思是我不必使用ConcurrentHashMap,而是使用LinkedHashMap+同步映射组合?你能给我看一些片段吗?
Collections.synchronizedMap(mapInstance)
Map<K,V> map = Collections.synchronizedMap(new LinkedHashMap());