import java.util.HashSet;
import java.util.Set;

class Buku {
    private final String isbn;

    public Buku(String isbn) {
        this.isbn = isbn;
    }

    // equals dioverride: dua Buku dengan ISBN sama dianggap setara.
    @Override
    public boolean equals(Object obj) {
        if (!(obj instanceof Buku lain)) {
            return false;
        }
        return isbn.equals(lain.isbn);
    }

    // hashCode sengaja TIDAK dioverride: masih versi default dari Object.
}

public class SetTanpaHashCode {
    public static void main(String[] args) {
        Buku anggota = new Buku("978-602-1234-01-5");
        Set<Buku> rak = new HashSet<>();
        rak.add(anggota);

        Buku dicari = new Buku("978-602-1234-01-5");

        // equals bilang setara...
        System.out.println("dicari.equals(anggota) : " + dicari.equals(anggota));

        // ...tetapi HashSet tidak menemukannya.
        System.out.println("rak.contains(dicari)   : " + rak.contains(dicari));

        // add objek "setara" malah menambah elemen kedua.
        rak.add(dicari);
        System.out.println("rak.size() setelah add : " + rak.size());
    }
}
