具有添加效果的 ConcurrentHashMap



我只是试图用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 的不同之处在于,它维护一个贯穿其所有条目的双向链表。此链表定义了迭代顺序,通常是键插入映射的顺序(插入顺序)。请注意,如果将键重新插入到映射中,则广告顺序不会受到影响。

相关内容

  • 没有找到相关文章

最新更新