我已将订购数组定义为:
String[] orderingArray = {"tag1", "tag2", "tag3", "tag4"};
此数组将用于定义即将到来的列表的排序。
现在,三个不同的线程在主UI线程上异步并且在任意时间发布它们各自的列表(来自网络)。相应列表中返回的所有对象都有一个标记值,可以是“tag1”,“tag2”......
我需要在主线程上维护一个列表,该列表应根据orderingArray中定义的值进行排序,即所有“tag1”对象应该是第一个,依此类推。
线程可以在任何时间以任何顺序从它们正在执行的池中发布,并且主列表应始终根据数组进行排序。每当任何线程发布其各自的列表时,蛮力方式就是比较器对列表进行排序。
关于如何有效实现这一目标的任何想法和建议?
答案 0 :(得分:2)
您可以使用ConcurrentSkipListSet
执行此任务,Set
将基于首先检查标记的Comparator,然后定义哪个更大。如果许多元素具有相同的标记,您很可能也需要一些打破平局。
按性质排序数据结构可确保每个元素相对有效地插入其正确位置,此实现允许并发修改。