import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class UrutMahasiswa {
    static class Mahasiswa implements Comparable<Mahasiswa> {
        private final String nama;
        private final int nilai;

        Mahasiswa(String nama, int nilai) {
            this.nama = nama;
            this.nilai = nilai;
        }

        public String nama() {
            return nama;
        }

        @Override
        public String toString() {
            return nama + "(" + nilai + ")";
        }

        @Override
        public int compareTo(Mahasiswa lain) {
            return Integer.compare(lain.nilai, this.nilai); // nilai tertinggi duluan
        }
    }

    public static void main(String[] args) {
        List<Mahasiswa> kelas = new ArrayList<>(List.of(
                new Mahasiswa("Budi", 78),
                new Mahasiswa("Siti", 92),
                new Mahasiswa("Dewi", 85)));

        Collections.sort(kelas);                            // pakai compareTo
        System.out.println("Per nilai : " + kelas);

        kelas.sort(Comparator.comparing(Mahasiswa::nama));  // pakai Comparator
        System.out.println("Per nama  : " + kelas);
    }
}
