List
은 사용 사례에 더 적합합니다. 그것은 당신에게 상자에서 꺼내 번거 로움없이 정렬 색인을 제공합니다. 또한,이
이
내가의 Team
개체를 비교하게 배열 목록을 사용할 것 등, 같은 테이블에서 같은 값의 주문 표시에 더 적합이다, 그럼 내가 할 것 :
public class Team implements Comparable<Team> {
private int points;
private int goalDifference;
public Team(int points, int goalDifference) {
this.points = points;
this.goalDifference = goalDifference;
}
@Override
public int compareTo(Team other) {
int res = other.points - this.points;
return res != 0 ? res : (other.goalDifference - this.goalDifference);
}
//getters and setters
}
으로 당신이 Team
클래스를 비교하게하지 않으려면 비교기를 사용 (위의 조각을 계속) 수,
List<Team> teams = ...
Collections.sort(teams);
: 유사한 Team
클래스, 당신은 목록 기능을 사용할 수 있습니다
teams.sort((team1, team2) ->
(team2.getPoints() != team1.getPoints()) ?
(team2.getPoints() - team1.getPoints()) :
(team2.getGoalDifference() - team1.getGoalDifference())
);
비교 또는 비교기에서 내림차순 논리를 구현했습니다. 대신 반전 비교기를 사용하도록 선택할 수 있습니다.
비교 필드의 수가 증가하면 Comparator를 구현하는 옵션이 점점 더 선호됩니다. 나는 그것이 더 읽기 쉽기 때문에 개인적으로 그것을 선호 할 것입니다.
두 티타임이 같은 장소에 있으면 한 번 깨지 않을까요? – baao
그렇습니다. 그렇지만 두 팀이 가지고있는 목표 차이에 대해서도 주문하고 싶습니다. 팀 A는 3 점, 팀 B는 3 점입니다. 팀 A의 목표 차이가 3이고 팀 B의 목표 차이가 5 인 경우 팀 B는 리그에서 더 큰 자리를 가져야합니다. –
또한 목표 차이가 같은 경우 가장 많은 목표를 가진 사람이 이탈해야합니다. 그것이 동일하다면 그들이 어떤 명령을 사용 하느냐가 중요하지는 않은지 확실하지 않습니다. –