import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class LaporanRapi {

    record Siswa(String nama, String kelas, int nilai) {}

    static final List<Siswa> ROMBONGAN = List.of(
        new Siswa("Budi", "X-2", 78),
        new Siswa("Siti", "X-2", 92),
        new Siswa("Dewi", "XI-3", 85),
        new Siswa("Ani", "X-2", 74)
    );

    // Satu pertanyaan, satu pipeline pendek, satu nama method yang jelas
    static double rataRataKelas(String kelas) {
        return ROMBONGAN.stream()
            .filter(s -> s.kelas().equals(kelas))
            .mapToInt(Siswa::nilai)
            .average()
            .orElse(0.0);
    }

    static List<String> peringkatTigaTeratas() {
        return ROMBONGAN.stream()
            .sorted(Comparator.comparingInt(Siswa::nilai).reversed())
            .limit(3)
            .map(Siswa::nama)
            .collect(Collectors.toList());
    }

    public static void main(String[] args) {
        System.out.printf("rata-rata X-2 = %.2f%n", rataRataKelas("X-2"));
        System.out.println("tiga teratas  = " + peringkatTigaTeratas());
    }
}
