Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按降序排列对象数组_Java_Arrays_Priority Queue - Fatal编程技术网

Java 按降序排列对象数组

Java 按降序排列对象数组,java,arrays,priority-queue,Java,Arrays,Priority Queue,我使用定义的“newsFeed”对象的堆数组实现优先级队列,这些对象都有一个字符串、一个“likes”int和一个“age”int。堆的优先级由每个newsFeed对象的“like”数决定,但是当我在堆上使用removeMax时,我为它编写的removeMaxReorder方法会给我空指针。在调试过程中,我很好奇是否有人知道一种算法可以解决这个问题,基本上可以将数组按降序重新排序,从而仍然保持优先级队列属性。我无法实现类似的方法,因为我无法修改newsFeed类,所以我设想了很多for循环和语句

我使用定义的“newsFeed”对象的堆数组实现优先级队列,这些对象都有一个字符串、一个“likes”int和一个“age”int。堆的优先级由每个newsFeed对象的“like”数决定,但是当我在堆上使用removeMax时,我为它编写的removeMaxReorder方法会给我空指针。在调试过程中,我很好奇是否有人知道一种算法可以解决这个问题,基本上可以将数组按降序重新排序,从而仍然保持优先级队列属性。我无法实现类似的方法,因为我无法修改newsFeed类,所以我设想了很多for循环和语句,比如
array[I].getLikes
和许多
>,我假设您不是在谈论PriorityQueue类,我不确定您是在谈论数组还是ArrayList,但是您不需要实现Comparable,因为您可以在不更改原始类的情况下创建一个Comparator

对于您的描述,听起来您希望对数组进行反向排序(或按降序排序),以实现我将使用的目的

NewsFeed[] newsFeed =
Arrays.sort(newsFeed, new MyDescendingPriorityOrderComparator());

请给我们看一些代码来演示这个问题。我不是在说PriorityQueue类,我是在实现我自己的PriorityQueue版本。我也在为它们使用数组,而不是ArrayList,所以我一直在必要时调整它们的大小。谢谢你的建议!我从未使用过比较器,但我会尝试使用它。比较器是我必须定义和实现的方法,还是内置方法?