import java.util.*;

public class KontrakCollection {
    public static void main(String[] args) {
        // Tipe variabel adalah interface, objeknya adalah implementasi.
        Collection<String> belanja = new ArrayList<>();
        belanja.add("Kopi");
        belanja.add("Teh");
        belanja.add("Susu");

        System.out.println("Jenis      : " + belanja.getClass().getSimpleName());
        System.out.println("Isi        : " + belanja);
        System.out.println("Ukuran     : " + belanja.size());
        System.out.println("Ada Teh?   : " + belanja.contains("Teh"));
        System.out.println("Kosong?    : " + belanja.isEmpty());

        belanja.remove("Teh");
        System.out.println("Setelah remove: " + belanja + " (ukuran " + belanja.size() + ")");

        // Implementasi berbeda, kontrak yang sama.
        Collection<String> unik = new HashSet<>();
        unik.add("Kopi");
        unik.add("Kopi");
        unik.add("Teh");
        System.out.println("Jenis      : " + unik.getClass().getSimpleName());
        System.out.println("Isi        : " + unik + " (ukuran " + unik.size() + ")");
    }
}
