我有一个自定义对象假设 Team
public class Team{
String name;
int teamNo;
ArrayList<Team> innerTeams;
int teamId;
//Getters and Setter Methods
现在我想按第一个属性的升序对其进行排序 name
考虑到每个 Team
对象本身有一个属性 Team
如arraylist
声明为innerTeams
我怎样才能对此进行排序。所以最终当任何arrayList
对象 Team
存在,应该对其进行排序。
请任何人帮我解决这个问题。
最佳答案
最简单的方法是让您的 Team
类实现 Comparable
。您可以调整 compareTo
内部的逻辑以满足您的需求,例如比较内部团队名称等。然后使用 Collections.sort()
进行实际排序。
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Team implements Comparable<Team> {
String name;
int teamNo;
List<Team> innerTeams = new ArrayList<>();
int teamId;
@Override
public int compareTo(Team o) {
if(o == null) {
return 1;
} else if(name == null) {
return 0;
} else {
return name.compareTo(o.name);
}
}
public static void main(String[] args) {
Team team1 = new Team();
team1.name = "z";
Team team2 = new Team();
team2.name = "a";
List<Team> teams = new ArrayList<>();
teams.add(team1);
teams.add(team2);
System.out.println(teams);
Collections.sort(teams);
System.out.println(teams);
}
@Override
public String toString() {
return name;
}
}
输出:
[z, a]
[a, z]
如果需要,您还可以使用相同的方法按名称对 innerTeams 进行排序。
关于java - java中自定义对象Arraylist的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607833/