2

2 つの配列があります。1 つは String[] で、もう 1 つは int[] です。整数配列の値は、文字列配列の要素に対応します。たとえば、String 配列にはいくつかのチームの名前が含まれ、別の int 配列にはリーグでのポイントが含まれています。Arrays.sort を使用して int 配列をソートできます。ポイントに従って String 配列をソートしたいのですが、2 つのチームが同じポイントを持っている場合は、アルファベット順に並べる必要があります。

2D配列を作成できると思いますが、それをソートするにはどうすればよいですか?

4

3 に答える 3

4

クラスの作成を検討してください。

class Team {
   String name;
   int numPoints;
}

そして配列を持っていTeam[] teamsます。String次に、条件と条件の両方に基づいて並べ替えるこれらのオブジェクトのコンパレータを作成できIntegerます。

于 2013-09-23T08:32:54.307 に答える
1

チームの両方の値を含むクラスを作成し、そのクラスに Comparable インターフェイスを実装させると、簡単に実行できます。次に、Arrays.sort を使用してこれらのオブジェクトの配列をソートするのは簡単です。

于 2013-09-23T08:31:07.273 に答える
0

クラスを作成し、2 つのコンパレータを追加します。

class Team{
   private String teamName;
   private int leaguePoints;
   public static final Comparator<Team> BY_NAME = new ByName();
   public static final Comparator<Team> BY_POINTS = new ByPoints();
   private static class ByName implements Comparator<Team>
   {
       public int compare(Team a, Team b)
         return a.name.compareTo(b.name); 
   }
   private static class ByPoints implements Comparator<Team>
   {
      public int compare(Team a, Team b)
         return a.leaguePoints - b.leaguePoints;
   }
}

次に、このクラスの配列を並べ替えるには、BY_NAME最初にコンパレータを使用し、次にを使用しBY_POINTSます。

Arrays.sort(array, Team.BY_NAME);
Arrays.sort(array, Team.BY_POINTS);

等しいキーの相対的な順序を維持するために、必ず安定した並べ替えを使用してください (つまり、ポイントが等しい場合、選択並べ替えのような不安定な並べ替えがチーム名の並べ替え順序を台無しにする可能性があります)。

于 2013-09-23T17:13:57.350 に答える