【发布时间】:2016-08-22 07:00:01
【问题描述】:
我必须编写一个需要列表的程序。此列表在其实现中需要是线程安全的(主要是为了避免 ConcurrentModificationException),但还需要允许
Collections.sort() 要应用的方法,出于 API 原因。
CopyOnWriteArrayList 满足前者,但不满足后者,我能找到的其他实现允许后者但不允许前者。
Java 有适合我的列表实现吗?
编辑:需要注意的重要一点是,不幸的是,我的代码需要与 Java 6 兼容。
【问题讨论】:
-
是否可以选择使用 3rd 方库?
-
@Fildor 如果它们是轻量级的,它可能是。
-
ConcurrentSkipListSet 会成为候选人吗?没关系 - 只需阅读您关于明确调用 API 的评论
Collections.sort():( -
不幸的是,从层次上讲,这似乎是 Set 的实现,而不是 List 的实现。
-
使用暴露
add()/delete()/sort()/getList()/clearList()方法的单例。其中一些方法应该是同步的,而其他方法应该有标志来允许或不允许操作(如排序)不能工作,除非没有调用 add/del。你可以使用一些布尔标志来处理这个
标签: java sorting collections concurrency