【问题标题】:Sort ArrayList of objects through one of its instance variables通过其实例变量之一对对象的 ArrayList 进行排序
【发布时间】:2012-11-19 00:41:53
【问题描述】:

你好,

我有一个对象(团队)的 ArrayList。他们是足球队,我想通过他们的观点对他们进行分类。显然,我完全知道 ArrayList 是按照它们插入的顺序排序的。

但我有一个 TEAM 课程,其中包含 gamesWon、gamesLost、gamesTied 和基于比赛结果的积分。

我已经准备好了一切,但我认为通过它的点来整理一个 ArrayList 将是一个很酷的功能。

我已经在线阅读了 Collections.sort(myArrayList) ,但这是基于 ONE 类型的变量进行排序的,并且由于我在 ArrayList 中有对象,因此我想对其进行排序。

谢谢。

马可

【问题讨论】:

    标签: java arraylist


    【解决方案1】:

    您应该为此定义一个Comparator

    public class PointsBasedTeamComparator implements Comparator<Team> {
        public int compare(Team t1, Team t2) {
            //return the result of points comparison of t1 and t2
        }
    }
    

    并按如下方式使用

    Collections.sort(teams, new PointsBasedTeamComparator());
    

    【讨论】:

      【解决方案2】:
      1. 定义一个java.util.Comparator&lt;Team&gt;,用您要检查的值实现compareTo

      2. 使用接受Comparator&lt;Object&gt; 的排序方法。它将使用ComparatorcompareTo 方法,而不是Team 中定义的方法(如果有)。

      3. 享受吧!

      【讨论】:

      • 我认为这需要Comparator 而不是ComparableComparable 意味着对象具有单一的自然顺序,而 Comparator 只是对它们进行排序的某种特殊方式,其中可能有几种。
      • 好吧,这有点令人困惑,因为我从未使用过 Comparator 等,但我会在使用之前阅读更多内容。谢谢一群人!
      猜你喜欢
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      相关资源
      最近更新 更多