首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对CopyOnWriteArrayList进行排序

对CopyOnWriteArrayList进行排序
EN

Stack Overflow用户
提问于 2014-08-20 02:45:39
回答 2查看 1.7K关注 0票数 2

我需要在多线程环境中维护一个对象列表。我读过关于CopyOnWriteArrayList的文章,它似乎是一个不错的选择。问题是,我也需要对列表进行排序。我不能为CopyOnWriteArrayList使用Collections.sort(),因为它不支持set()操作。我找到了几种对CopyOnWriteArrayList进行排序的方法。但在性能方面,它们看起来并不好。

我的问题是:在这种情况下,有没有另一种数据结构可以派上用场?基本上,我需要在多线程环境中保存一个排序列表。列表适配器将使用该数据结构。所以,它应该提供像"get(position)“这样的方法。

我最近读到了另一个数据结构ConcurrentSkipListSet。有人能解释一下它的利弊吗?它能很好地解决我的问题吗?

EN

回答 2

Stack Overflow用户

发布于 2015-10-09 14:50:50

我知道您会问性能,我不确定我的方法在这方面做得有多好,但我使用的是:

代码语言:javascript
复制
List arrayList = Arrays.asList(cowArrayList.toArray());
Collections.sort(arrayList, new MyComparator());
cowArrayList.clear();
cowArrayList.addAll(arrayList);
票数 1
EN

Stack Overflow用户

发布于 2015-01-19 18:11:31

解决方案1:如果您想在插入每个元素的过程中对列表进行排序,则可以执行二进制搜索,并每次都将元素添加到排序的位置。假设列表始终是排序的。请看一下http://www.javacreed.com/sorting-a-copyonwritearraylist/

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25390782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档