我需要在多线程环境中维护对象列表。我已经阅读了有关CopyOnWriteArrayList
的内容,这似乎是一个不错的选择。问题是,我也需要对列表进行排序。我不能将Collections.sort()
用于CopyOnWriteArrayList
,因为它不支持set()
操作。我发现了几种对CopyOnWriteArrayList进行排序的方法。但是从性能角度来看,它们看起来并不好。
我的问题是:在这种情况下是否有其他可以方便使用的数据结构?基本上,我需要在多线程环境中保留排序列表。列表适配器将使用该数据结构。因此,它应该提供“ get(position)”之类的方法。
我最近阅读了另一种数据结构ConcurrentSkipListSet
。谁能解释它的优缺点?会适合我的问题吗?
最佳答案
我知道您是在询问性能,但是我不确定我的方法在此方面做得如何,但是这是我使用的方法:
List arrayList = Arrays.asList(cowArrayList.toArray());
Collections.sort(arrayList, new MyComparator());
cowArrayList.clear();
cowArrayList.addAll(arrayList);