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

public class AnonimVsLambda {
    public static void main(String[] args) {
        List<String> nama = new ArrayList<>(List.of("Kurniawan", "Budi", "Siti"));

        // Versi 1: anonymous class (gaya sebelum Java 8)
        Comparator<String> panjangAsc = new Comparator<String>() {
            @Override
            public int compare(String a, String b) {
                return Integer.compare(a.length(), b.length());
            }
        };
        nama.sort(panjangAsc);
        System.out.println("Anonymous class : " + nama);

        // Versi 2: lambda dengan makna yang sama persis
        nama.sort((a, b) -> Integer.compare(b.length(), a.length()));
        System.out.println("Lambda          : " + nama);

        // Runnable: anonymous class vs lambda
        Runnable tugasAnonim = new Runnable() {
            @Override
            public void run() {
                System.out.println("Tugas berjalan (anonymous)");
            }
        };
        tugasAnonim.run();

        Runnable tugasLambda = () -> System.out.println("Tugas berjalan (lambda)");
        tugasLambda.run();
    }
}
