如何使用两个不同的值对Java列表进行排序?

Daw*_*n17 2 java sorting

public void sortLeagueTable(List<LeagueTableItem> table) {
    Collections.sort(table, new Comparator<LeagueTableItem>(){
        public int compare(LeagueTableItem o1, LeagueTableItem o2){
            return o2.getPoints() - o1.getPoints();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

此代码根据名为points的对象的值对两个列表进行排序.根据point我想要根据值再次对其进行排序的值对其进行排序后goalScored.所以,如果两支球队的分数相等,我想根据goalScored价值再次对其进行排序.

我怎样才能做到这一点?

Mur*_*nik 9

Java 8对Comparator界面的增强为您提供了一种非常优雅的方式来实现这一目标:

table.sort(Comparator.comparingInt(LeagueTableItem::getPoints)
                     .thenComparingInt(LeagueTableItem::goalScored));
Run Code Online (Sandbox Code Playgroud)