我有几个数组列表,每个数组都包含特定团队的玩家数据。每个对象按顺序包含以下元素; 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/