如何根据自定义条件保留排序的数据结构

时间:2015-02-12 19:28:31

标签: java android algorithm

我已将订购数组定义为:

String[] orderingArray = {"tag1", "tag2", "tag3", "tag4"};

此数组将用于定义即将到来的列表的排序。

现在,三个不同的线程在主UI线程上异步并且在任意时间发布它们各自的列表(来自网络)。相应列表中返回的所有对象都有一个标记值,可以是“tag1”,“tag2”......

我需要在主线程上维护一个列表,该列表应根据orderingArray中定义的值进行排序,即所有“tag1”对象应该是第一个,依此类推。

线程可以在任何时间以任何顺序从它们正在执行的池中发布,并且主列表应始终根据数组进行排序。每当任何线程发布其各自的列表时,蛮力方式就是比较器对列表进行排序。

关于如何有效实现这一目标的任何想法和建议?

1 个答案:

答案 0 :(得分:2)

您可以使用ConcurrentSkipListSet执行此任务,Set将基于首先检查标记的Comparator,然后定义哪个更大。如果许多元素具有相同的标记,您很可能也需要一些打破平局。

按性质排序数据结构可确保每个元素相对有效地插入其正确位置,此实现允许并发修改。