使用Object的属性对ArrayList进行排序

时间:2015-02-23 11:25:09

标签: java sorting arraylist collections

这是一个有趣的隐喻问题:
假设我得到了一份人员名单,而且人们都是大人物,父亲和孩子。

Eg:(badly scrambled)
[Kid1, Kid2, GrandPa2, GrandPa3, Father1, Father3, Kid4, Father4, kid5] 

我想对它们进行排序:

[Father1-Kid1, GrandPa2, Kid2, GrandPa3-Father3, Father4-Kid4, Kid5]

只需替换上面的列表 - 用,并且它毕竟是一个列表。

我该如何排序?我尝试过Comparator,它变得非常复杂,许多匹配杀死了性能。

PS-我在每个ms JVM花费的环境中工作,请引导我通过一些最佳方式。

注意:除了List之外不能使用任何东西。

到目前为止我做了什么:
将所有grandPas放在一个列表中,然后将父亲添加到相关的爷爷索引中,同样适用于孩子。我觉得这很好用,可能会更快吗?

2 个答案:

答案 0 :(得分:2)

也许你不应该使用列表。使用一些树结构来表示元素的层次结构(如果某些元素不相关,则使用森林)。然后遍历该树可以按照您希望的顺序生成元素。

答案 1 :(得分:1)

您可以按编号将所有条目分组到ID的集合列表中。例如以1结尾的所有内容都会进入列表[1],以2结尾的所有内容都会进入列表[2]。一旦条目被分类到数字,您可以根据需要合并这些条目。

这应该让你接近O(N)时间。