0

可能重复:
按多个字段比较对象的最佳方法?

您好,我对编程有点陌生,想寻求帮助,我的老师创建了一个课程,其中给出了国家、大陆和人口。期望的输出是获得每个大陆的前 10 个人口稠密的国家。

代码:

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);
}
}
4

2 回答 2

3

我可能会将每个按大陆分类,他们只是对每个进行Country分类Map<Continent, List<Country>>List

于 2012-08-03T10:25:21.480 回答
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;
        }
    });
于 2012-08-03T10:50:32.393 回答