我只是试图用ConcurrentHashMap<String,String>
获得添加效果,但元素顺序是混合的。代码像...
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());
}
。在控制台中给出下一个值:
9
4
6
2
0
5
1
7
3
8
。所以我的问题是...
如果键是某个随机字符串,有没有办法让 ConcurrentHashMap 获得原始元素的顺序?
谢谢
改用LinkedHashMap
它将保留插入顺序
Map接口的哈希表和链表实现,具有可预测的迭代顺序。
并使用
Collections.synchronizedMap(mapInstance)
见Collections.synchronizedMap(mapINstance);
Map<K,V> map = Collections.synchronizedMap(new LinkedHashMap());
LinkedHashMap 保持插入顺序。
Map接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashMap 的不同之处在于,它维护一个贯穿其所有条目的双向链表。此链表定义了迭代顺序,通常是键插入映射的顺序(插入顺序)。请注意,如果将键重新插入到映射中,则广告顺序不会受到影响。