java - (Java) 如何对对象数组进行排序,并断开两个对象之间的联系?

标签 java arrays sorting object

假设我有一个对象 - TeamTeam 有三个字段,winslossesdraws

如果我有几个对象说 Team1Team2Team3,其中 Team1 有 3 场胜利, 2负1平,Team23胜3负,Team32胜3负1平

将所有三个团队放在一个数组中。

我正在尝试排序(我知道该怎么做.. 实现 Comparable,覆盖 compareTo() 使用 Array.sort)他们按胜场排序,如果两支球队的胜场相同,我想按失利对他们进行排序(最终将添加第三个字段以进一步打破平局)。

我应该编写自己的排序方法吗?有人可以指出我正确的方向吗,因为我不知道该去哪里。

最佳答案

与 Ben 的回答类似,但有一点不同,为了清楚起见,我经常使用以下模式。这是一个Comparator,但Comparable 的代码类似。

Comparator<Team> myComparator = new Comparator() {
   @Override
   public int compare(Team t1, Team t2) {
      int result = t1.getWins() - t2.getWins();
      if (result == 0)
         result = t2.getLosses() - t1.getLosses();
      if (result == 0)
         ... more tests here

      return result;
   }

};

请注意,在极端情况下,取两个整数的差可能溢出,因此更稳健的变体将使用Integer.compare(t1.getWins() , t2.getWins())。但是,在这种情况下,您的球队不太可能有超过 2^31 场胜利或失败。 :-)

要使用它,去

Arrays.sort(myArrayOfTeams, myComparator);

关于java - (Java) 如何对对象数组进行排序,并断开两个对象之间的联系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27029296/

相关文章:

java - 如何为单列连接覆盖 @JoinColumn 中默认生成的 SQL 名称

java - 为什么下载管理器完成后广播接收器不调用?

Python数组简单问题

algorithm - 如何在线性时间内对长度为 k 的 n 个单词进行排序?

sorting - Elasticsearch - 按缺少参数的多个字段排序

python - 在 Python 中按元素总和对组合进行排序

java - 可点击的 ListView

java - 无法使用 Spring 配置 JPA

ios - Swift 使用没有泛型的动态类型引用创建类型数组

c - 有趣的字符串代码