Java 链接两个数组并将它们排序在一起

Java 链接两个数组并将它们排序在一起,java,arrays,sorting,multidimensional-array,Java,Arrays,Sorting,Multidimensional Array,我有两个数组,一个是String[],另一个是int[]。整数数组中的值对应于字符串数组的元素。 例如,字符串数组包含一些球队的名字,另一个整数数组包含他们在联赛中的分数。 我可以使用Arrays.sort对int数组进行排序,我想根据点数对字符串数组进行排序,如果两个团队的点数相同,我应该按字母顺序排列 我想我可以创建一个2D数组,但是如何排序呢?如果您为团队创建了一个包含这两个值的类,并让该类实现可比较的接口,那么您将很容易做到这一点。然后,使用Arrays.sort对这些对象的数组进行排序

我有两个数组,一个是String[],另一个是int[]。整数数组中的值对应于字符串数组的元素。 例如,字符串数组包含一些球队的名字,另一个整数数组包含他们在联赛中的分数。 我可以使用Arrays.sort对int数组进行排序,我想根据点数对字符串数组进行排序,如果两个团队的点数相同,我应该按字母顺序排列


我想我可以创建一个2D数组,但是如何排序呢?

如果您为团队创建了一个包含这两个值的类,并让该类实现可比较的接口,那么您将很容易做到这一点。然后,使用Arrays.sort对这些对象的数组进行排序就很简单了。

考虑创建一个类:

class Team {
   String name;
   int numPoints;
}

还有一个数组
团队[]团队
。然后,您可以为这些对象创建一个比较器,该比较器根据
String
Integer
标准进行排序。

创建一个类并添加两个比较器:

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

确保使用稳定排序保留相等键的相对顺序(即如果点相等,则不稳定排序(如选择排序)可能会扰乱团队名称的排序顺序)。

您需要一个类-
team
,属性为
name
point
。互联网上有很多这样的例子,互联网本身也是如此。请搜索它。这取决于域。如果团队存在于这些结果之外,那么您需要一个
Team
类和
TeamResults
类。您可以使用映射来代替,并按如下所述对其进行排序:
Arrays.sort(array, Team.BY_NAME);
Arrays.sort(array, Team.BY_POINTS);