在一个比较器中对两个不同的字段进

时间:2012-08-03 10:16:06

标签: java

  

可能重复:
  Best way to compare objects by multiple fields?

您好,我对编程很陌生,想要求帮助,我的老师创建了一个课程,其中包括国家,大陆和人口。期望的输出是获得每个大洲的前十大人口。

代码:

import java.util.*;

public class WP {

public static void main(String[] args) {
    WorldPop[] list = WorldPop.getList();
    int index;

    Arrays.sort(list, new PopComparator());

    for (int i=0; i<list.length; i++) {
        System.out.printf("%-53s %-20s %,14d\n", list[i].country, 
                       list[i].continent, list[i].population);
    }
}
}

class PopComparator implements Comparator<WorldPop> {
public int compare(WorldPop x, WorldPop y) {
    return x.population - y.population;
}
}

class TitleComparator implements Comparator<WorldPop> {
public int compare(WorldPop x, WorldPop y){
    return x.continent.compareTo(y.continent);
}
}

2 个答案:

答案 0 :(得分:3)

我可能会按照大陆的Country对每个Map<Continent, List<Country>>进行排序,他们只需对每个List进行排序

答案 1 :(得分:0)

首先,您可以使用Comparator下面的列表对列表进行排序。现在,您的列表将根据大陆和国家/地区进行排序,然后通过计算每个重复大陆的国家/地区数量进行迭代。

 Collections.sort(list, new Comparator<WorldPop>() {
        @Override
        public int compare(WorldPop x, WorldPop y) {
            int c;
            c = x.continent.compareTo(y.continent);
            if (c == 0)
               c = x.population .compareTo(y.population );
            return c;
        }
    });