我有一个类使用优先级队列以升序显示5个字符串.我理解为了按降序排列,我可以使用"collections.reverseOrder()"方法.如何使用此方法使用以下代码?
import java.util.*;
public class queue {
public static void main (String[] args) {
PriorityQueue<String> sQ = new PriorityQueue<String>();
sQ.add("theodore");
sQ.add("theo");
sQ.add("Shailee");
sQ.add("Deborah");
sQ.add("Fernando");
sQ.add("th");
while (sQ.size() > 0)
System.out.println(sQ.remove());
Collections.reverseOrder(); //I am stuck here...
}
}
Run Code Online (Sandbox Code Playgroud)
Ósc*_*pez 11
在删除以下元素之前,请尝试这样的操作sQ:
PriorityQueue<String> reversed =
new PriorityQueue<String>(sQ.size(), new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return -o1.compareTo(o2);
}
});
reversed.addAll(sQ); // now `reversed` contains the reversed priority queue
Run Code Online (Sandbox Code Playgroud)
因为你正在使用自然顺序String,所以建立另一个PriorityQueue传递作为参数的新比较器是有意义的,它比较字符串但是反转顺序(注意-比较前面的符号).
编辑:
正如评论中所指出的,这是一个更简单的解决方案:
PriorityQueue<String> reversed =
new PriorityQueue<String>(sQ.size(), Collections.reverseOrder());
reversed.addAll(sQ);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8478 次 |
| 最近记录: |