【发布时间】:2012-08-24 22:41:36
【问题描述】:
我在 web 上创建了此代码。打扰一下,如果在这里问,但我不只明白一件事。 返回 population2 - population1; 究竟是什么? 它通过每次相互比较 (o1 和 o2) 对项目进行排序,通过冒号后面的部分没有任何最终空格(前导和韵母),所以数字,并按...排序?
import java.util.Comparator;
import java.util.PriorityQueue;
public class Main {
public static void main(String[] args) {
PriorityQueue<String> queue = new PriorityQueue<String>(11,
new Comparator<String>() {
public int compare(String o1, String o2) {
int population1 = Integer.parseInt(o1.split(":")[1].trim());
int population2 = Integer.parseInt(o2.split(":")[1].trim());
return population2 - population1;
}
});
queue.add("United States: 307006550");
queue.add("Brazil: 193733800");
queue.offer("Russia: 141850000");
queue.offer("India: 1155347700");
queue.offer("China: 1331460000");
System.out.println("Countries in database: " + queue.size());
while (!queue.isEmpty()) {
System.out.println(queue.poll());
}
System.out.println("Countries in database: " + queue.size());
}
}
如果我尝试更改,例如将代码更改为:
return population1 - population2;
它将数字排序为:
United States: 307006550
Russia: 141850000
Brazil: 193733800
India: 1155347700
China: 1331460000
为什么?
【问题讨论】:
-
kurtzbot:对不起,现在我已经修改了我最后的问题。
-
对于所有人:我知道 compare(arg1,arg2) 或 arg1.compareTo(arg2) 如果 arg1
arg2 为正数,否则返回 0。但我会说出这一切背后的算法是什么。也就是说,在我插入第一个之后它什么也不做。但是从第二个开始,它到底做了哪些操作呢?我希望我的问题很清楚。 -
我在看到最新评论后更新了答案。
标签: java sorting queue comparator