【问题标题】:Sort Array of Objects by Objects' Property [duplicate]按对象的属性对对象数组进行排序[重复]
【发布时间】:2013-05-27 01:30:52
【问题描述】:

我知道有很多这样的问题,并且我已经阅读了很多,但我真的无法弄清楚。我有一个用户定义的对象 Team,它具有团队名称 (String)、batAvg (Double) 和 slugAvg (Double) 属性。我想按 batAvg 降序排列和打印团队,然后按 slugAvg 降序排列。我有一个包含所有团队的数组,teamArray (Team[])。按球队的击球率和打击率对这个数组进行排序的最佳方法是什么。我已经尝试了很多东西,但似乎都不起作用。

【问题讨论】:

  • “我读了很多书,但我真的想不通。” 那么是什么让你认为我们写的任何东西都会突然帮助你弄明白呢?

标签: java arrays sorting object properties


【解决方案1】:

请检查以下代码,

import java.util.Arrays;
import java.util.Comparator;


public class Team {
    private String name;
    private double batAvg;
    private double slugAvg;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getBatAvg() {
        return batAvg;
    }
    public void setBatAvg(double batAvg) {
        this.batAvg = batAvg;
    }
    public double getSlugAvg() {
        return slugAvg;
    }
    public void setSlugAvg(double slugAvg) {
        this.slugAvg = slugAvg;
    }


    public static void  main(String[] argv){
        Team[] teams = new Team[2]; //TODO, for testing..
        Arrays.sort(teams, new TeamComparator());  //This line will sort the array teams
    }
}

class TeamComparator implements Comparator<Team>{

    @Override
    public int compare(Team o1, Team o2) {
        if (o1.getSlugAvg()==o2.getSlugAvg()){
            return 0;
        }
        return o1.getSlugAvg()>o2.getSlugAvg()?-1:1;
    }

}

【讨论】:

    最近更新 更多