【发布时间】:2011-02-11 11:55:15
【问题描述】:
我正在尝试为多线程架构创建并发 LinkedHashMap。
如果我使用Collections#synchronizedMap(),我将不得不使用同步块进行迭代。这种实现会导致元素的顺序添加。
如果我使用ConcurrentSkipListMap,有没有办法实现Comparator 以顺序存储,如存储在链接列表或队列中。
我想使用 java 的内置而不是第三方包。
编辑:
在这个并发的LinkedHashMap 中,如果键是名称,我希望按它们到达的顺序放置键。即新值将被附加到开始或结束,但顺序。
在迭代时,LinkedHashMap 可以添加新条目,也可以删除。但迭代应该是添加条目的顺序。
我了解,通过使用Collections#synchronizedMap(),必须实现用于迭代的同步块,但映射在迭代时是否可以修改(可以添加/删除条目)。
【问题讨论】:
-
你在说什么getter/setter?你想“按顺序存储”什么?请提供更多详细信息 - 目前很难理解您真正想要做什么。
-
你想按顺序存储什么?如果您的密钥具有可定义的顺序,那么您应该能够编写一个比较器。也许您应该提供有关地图中的键以及您希望它们如何排序的更多信息。
标签: java collections concurrency