import java.util.Comparator;
import java.util.List;

public class PetaFitur {

    record Fitur(String nama, int versiFinal) { }

    // Versi LTS yang menjadi patokan Course ini.
    static final List<Integer> VERSI_LTS = List.of(17, 21, 25);

    static String labelVersi(int versi) {
        return VERSI_LTS.contains(versi) ? versi + " (LTS)" : String.valueOf(versi);
    }

    public static void main(String[] args) {
        var kepala = """
                ==============================
                Peta Fitur Bahasa Modern Java
                ==============================
                """;
        System.out.print(kepala);

        var daftar = List.of(
                new Fitur("var", 10),
                new Fitur("switch expression", 14),
                new Fitur("text block", 15),
                new Fitur("record", 16),
                new Fitur("sealed class", 17),
                new Fitur("pattern matching switch", 21),
                new Fitur("record pattern", 21),
                new Fitur("virtual thread", 21),
                new Fitur("sequenced collection", 21),
                new Fitur("unnamed variable _", 22),
                new Fitur("FFM API", 22),
                new Fitur("scoped value", 25));

        daftar.stream()
                .sorted(Comparator.comparingInt(Fitur::versiFinal))
                .forEach(f -> System.out.printf(
                        "%-26s final di Java %s%n", f.nama(), labelVersi(f.versiFinal())));

        System.out.println("total fitur dipetakan: " + daftar.size());
    }
}
