我正在使用定义的“newsFeed”对象的堆数组来实现优先级队列,这些对象都有一个String,一个“喜欢”的int和一个“age”的int。堆由每个newsFeed对象的“喜欢”数量区分优先级,但是当我在其上使用removeMax时,我为它编写的removeMaxReorder方法给了我空指针。正如我正在调试它,我只是好奇是否有人知道一个算法将绕过这个并基本上按顺序重新排序数组,因此仍然保持优先级队列属性。我无法实现类似的方法,因为我无法修改newsFeed类,所以我想象了许多for循环和语句,如array[i].getLikes
和很多>,<
和{{1 }}
答案 0 :(得分:2)
我假设您不是在讨论PriorityQueue类,我不确定您是在讨论数组还是ArrayList,但是您不需要实现Comparable,因为您可以在不更改原始类的情况下创建Comparator
对于您的描述,听起来您想要反向排序数组(或按降序排序)为此,我会使用
NewsFeed[] newsFeed =
Arrays.sort(newsFeed, new MyDescendingPriorityOrderComparator());