Skip to content

M03 · Bab 4± 40 menitDraf AI

equals & hashCode

Tujuan belajar

  • Membedakan identitas object (==) dan kesamaan isi (equals)
  • Menjelaskan kontrak equals dan hashCode serta hubungan keduanya
  • Menulis equals dan hashCode yang benar dengan pattern instanceof, Objects.equals, dan Objects.hash
  • Menjelaskan kenapa object "hilang" di HashSet/HashMap bila kontrak dilanggar atau kunci diubah
  • Memilih record bila kesamaan berbasis isi sudah cukup

Prasyarat: Queue, Deque, dan PriorityQueue

Kuis

6 soal · lulus bila minimal 70% benar

1.Jika a.equals(b) bernilai true, pernyataan mana yang wajib benar menurut kontrak?
2."Aa".hashCode() dan "BB".hashCode() sama-sama 2112. Apa kesimpulan yang benar?
3.Class ProductCode hanya meng-override equals (berbasis field value), tanpa hashCode. Apa output yang hampir pasti dari Set<ProductCode> set = new HashSet<>(); set.add(new ProductCode("A")); System.out.println(set.contains(new ProductCode("A")));?
4.Sebuah HashMap<CartKey, Integer> diisi carts.put(key, 3). Setelah itu field key.userId diubah. Kenapa carts.get(key) mengembalikan null padahal carts.size() masih 1?
5.record Point(int x, int y) {} — apa output dari System.out.println(new HashSet<>(List.of(new Point(1, 2), new Point(1, 2), new Point(2, 1))).size());?
6.Class Q menulis public boolean equals(Q other) (parameternya Q, bukan Object) dan hashCode yang benar. Apa output dari Object q = new Q("A"); System.out.println(new Q("A").equals(q) + " " + List.of(new Q("A")).contains(new Q("A")));?

Jawab semua soal dulu (0/6)