java - 按特定元素对对象的 ArrayList 进行排序

标签 java sorting object arraylist element

我有几个数组列表,每个数组都包含特定团队的玩家数据。每个对象按顺序包含以下元素; Jersey 号码、名字、姓氏、首选位置、进球、助攻。用户决定是否按进球数或助攻数查看数据,然后数据按降序显示。进球和助攻都是int数据类型。

我将能够很好地显示数据,但我所困惑的是如何通过这些特定统计数据之一对 arrayList 进行排序。因为所有团队的数据都在不同的arrayList中,并且需要一起排序,所以我是否需要将arrayList合并到一个要排序的主arrayList中?至于排序,我做了一些研究,看起来我需要使用比较器?有人可以提供一些帮助吗,因为我以前从未使用过这些并且很迷失。例子会很好。

我附上了一些代码片段,希望能够提供一些清晰的信息。

ArrayList <blackTeam> blackTeam = new ArrayList <blackTeam>();
ArrayList <blueTeam> blueTeam = new ArrayList <blueTeam>();
ArrayList <greenTeam> greenTeam = new ArrayList <greenTeam>();
ArrayList <orangeTeam> orangeTeam = new ArrayList <orangeTeam>();
ArrayList <redTeam> redTeam = new ArrayList <redTeam>();
ArrayList <yellowTeam> yellowTeam = new ArrayList <yellowTeam>();

private void displaystatButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
    //sort arrayList by goals/assists

}

编辑: 这就是我的类的设置方式以及向它们添加数据的方式。希望这能解决一些问题。

//add data to database
black = new blackTeam(jerseyNum, firstName, lastName, prefPosition, goals, assists);
blackTeam.add(black);

class blackTeam {
    int goals, assists;
    String jerseyNum, firstName, lastName, prefPosition;

    blackTeam (String _jerseyNum, String _firstName, String _lastName, String _prefPosition, int _goals, int _assists) {
        jerseyNum = _jerseyNum;
        firstName = _firstName;
        lastName = _lastName;
        prefPosition = _prefPosition;
        goals = _goals;
        assists = _assists;
    }
}

我为每个团队开设一门这样的类(class)。

最佳答案

我建议在您的对象上使用Comparator,让我假设它是Team

public class Team{
    private int jerseyNumber;
    private String lastName;
    ...
    public int getJerseyNumber(){
        return jerseyNumber;
    }
}

如果要根据 Jersey 号码排序,请生成JeseryNumberComaparator:

import java.util.Comparator;

public class JeseryNumberComaparator implements Comparator {

    @Override
    public int compare(Team t1, Team t2) {

        // descending order (ascending order would be:
        // t1.getJerseyNumber()-t2.getJerseyNumber())
        return t1.getJerseyNumber()-t2.getJerseyNumber()
    }
}

它将根据 Jersey 号码对您的列表进行排序:

Collections.sort(blackTeam, new JerseyNumberComparator());

关于java - 按特定元素对对象的 ArrayList 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42121624/

相关文章:

java - 为什么鼠标事件后图像从标题 Pane 中消失?

python - 我可以通过两个值相减的结果对字典列表进行排序吗?

php - 按优先级排序数组

.net - 如何使用List.Sort和Comparison(of T)来降序/升序排序?

javascript - 为什么 jQuery 扩展方法不复制我的 javascript 对象?

javascript - 当对象属性不存在时返回值

java - 在不重启 GUI 的情况下重启/重玩 Java 游戏

java - 如何从java中保存数据库值的字符串数组计算一小时前的时间

perl - 我可以在 Perl 中创建类似 Java 的接口(interface)吗?

java - 在线程中运行消息循环