【发布时间】:2014-08-22 22:24:03
【问题描述】:
我有两种不同类型的对象,它们都有一个整数来保持它们的优先级。在另一个类中,我想按照取决于这些优先级的顺序遍历每个对象,优先级较高的对象排在优先级较低的对象之前。
现在我的问题是对象有两种不同的类型。这让我更难对它们进行排序。
循环的类有两个ArrayLists,一个持有一种类型的对象,另一个持有另一种类型的对象。
这是我目前想到的:
- 创建一个布尔值
ArrayList和两个整数ArrayLists。 - 循环遍历第一个对象类型的列表,将 True Boolean 添加到 Boolean 列表,将对象列表中的索引添加到 Integer 列表,并将优先级添加到第二个 Integer 列表。
- 现在循环遍历第二类对象的列表,将 False 布尔值添加到布尔列表中,将第二个列表中的索引添加到整数列表中,并将优先级添加到另一个整数列表中。
- 现在我将检查
ArrayList的优先级并排序,以便更高的数字排在第一位。同时,我也会按照我对优先级列表的排序方式对其他两个列表进行排序。
在每个列表中只有几个对象(例如每个列表中有四个)的情况下,布尔列表和整数列表可能如下所示:
布尔值:真、真、真、真、假、假、假、假
索引整数:0、1、2、3、0、1、2、3
优先整数:5、7、2、3、4、6、8、1
按优先级排序后,如下所示:
布尔值:假、真、假、真、假、真、真、假
索引整数:2、1、1、0、0、3、2、3
优先整数:8、7、6、5、4、3、2、1
现在循环的类知道谁先走以及它是什么类型的对象。
这会起作用,但它很丑陋,必须有一种更快的方法来做到这一点,或者至少是一种更简单的方法。或者也许做我计划但更有效的事情。我愿意接受完全不同的算法或对我描述的算法进行调整的想法。
【问题讨论】:
-
使用自定义
Comparator(s) 调用Collections.sort()。 -
您是否尝试过将
PriorityQueue与自定义比较器一起使用?