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

私はおそらくそれぞれCountryMap<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 に答える