按降序对对象数组进行排序[关闭]
Posted
技术标签:
【中文标题】按降序对对象数组进行排序[关闭]【英文标题】:sort array of objects in descending order [closed] 【发布时间】:2012-12-09 00:20:21 【问题描述】:我正在使用定义的“newsFeed”对象的堆数组来实现优先级队列,这些对象都有一个字符串、一个“喜欢”的整数和一个“年龄”的整数。堆按每个 newsFeed 对象具有的“喜欢”的数量来确定优先级,但是当我在其上使用 removeMax 时,我为它编写的 removeMaxReorder 方法给了我空指针。当我调试它时,我只是好奇是否有人知道一种算法可以解决这个问题并基本上将数组重新排序为降序,从而仍然保留优先级队列属性。我无法实现类似的方法,因为我无法修改 newsFeed 类,所以我想象了很多 for 循环和语句,例如 array[i].getLikes
和很多 >,<
和 =
【问题讨论】:
请给我们看一些演示问题的代码 【参考方案1】:我假设您不是在谈论 PriorityQueue 类,我不确定您是在谈论数组还是 ArrayList,但您不需要实现 Comparable,因为您可以在不更改原始类的情况下创建 Comparator .
对于您的描述,听起来您想对数组进行反向排序(或按降序排序)为此我会使用
NewsFeed[] newsFeed =
Arrays.sort(newsFeed, new MyDescendingPriorityOrderComparator());
【讨论】:
我不是在谈论 PriorityQueue 类,我正在实现我自己的 PriorityQueue 版本。而且我也在为它们使用数组,而不是 ArrayList,所以我一直在必要时调整它们的大小。并感谢您的建议!我从未使用过比较器,但我会尝试使用它。比较器是我必须定义和实现的方法,还是内置方法?以上是关于按降序对对象数组进行排序[关闭]的主要内容,如果未能解决你的问题,请参考以下文章