Mengosongkan dan Menyalin
Termasuk bagian Logika & Alur dalam perjalanan Java di Coddy. Pelajaran 27 dari 59.
method clear() menghapus semua elemen dari HashSet, sehingga HashSet menjadi kosong.
Method clone() mengembalikan salinan dangkal dari HashSet. (Elemen-elemennya sendiri tidak diklon.)
Sebagai contoh, pertama-tama buat HashSet:
HashSet<String> set = new HashSet<>();
set.add("Coddy");Untuk mengkloning set:
HashSet<String> clonedSet = (HashSet<String>) set.clone();
System.out.println(clonedSet);
// output: [Coddy]Untuk mengosongkan set:
set.clear();
System.out.println(set.isEmpty());
// output: trueMengapa kita memerlukan casting dengan clone()?
Kamu sudah belajar tentang casting dengan tipe primitif (seperti int x = (int) 3.14). Konsep yang sama berlaku untuk object, tetapi karena alasan yang berbeda.
Method clone() mengembalikan tipe Object generik, bukan HashSet<String> tertentu. Ini karena clone() didefinisikan di class Object dan tidak tahu tipe apa yang sedang kamu clone.
// Yang dikembalikan clone():
Object cloneResult = set.clone(); // Mengembalikan Object, bukan HashSet<String>
// Yang kita butuhkan:
HashSet<String> clonedSet = (HashSet<String>) set.clone(); // Ubah tipe Object → HashSet<String>Penge-cast-an memberi tahu Java: "Aku tahu Object ini sebenarnya adalah HashSet<String>, jadi perlakukan sebagai HashSet<String>."
Tanpa cast, kamu akan mendapatkan error kompilasi karena Java tidak akan otomatis mengonversi Object menjadi HashSet<String>.
Tantangan
MudahBuat method bernama processSet yang menerima HashSet berisi String sebagai input. Method ini harus:
- Mengkloning set.
- Mengosongkan set asli.
- Mencetak set hasil kloning dan ukurannya dalam format:
Cloned Set: [elements]Cloned Set Size: X - Mencetak set asli (setelah dikosongkan) dan ukurannya dalam format:
Original Set after clear: [elements]Original Set Size: Y
Coba sendiri
import java.util.HashSet;
import java.util.Scanner;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
@SuppressWarnings("unchecked")
public class Main {
public static void processSet(HashSet<String> set) {
// Tulis kodemu di sini
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String setString = scanner.nextLine();
Type setType = new TypeToken<HashSet<String>>(){}.getType();
HashSet<String> set = new Gson().fromJson(setString, setType);
processSet(set);
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika & Alur
1Array Multidimensi
Dasar Array 2DMengakses Elemen Array 2DLoop Bersarang dengan Array 2DRangkuman: Array 2DPenjumlahan dan Pengurangan MatriksArray BergerigiArray 3D dan Lebih JauhPola Umum Array 2DRangkuman: Semua tentang Array4HashSet Bagian 1
Apa itu HashSet?Menambahkan ElemenMenghapus ElemenMemeriksa Apakah Elemen AdaKosong dan UkuranMengosongkan dan MenyalinRekap: HashSet2HashMap Bagian 1
Apa itu HashMap?Deklarasikan HashMapMengakses nilaiPeriksa apakah key adaMengubah dictionaryRingkasan: HashMap3HashMap Bagian 2
Method HashMapIterasi dengan keySet()Iterasi dengan entrySet()HashMap BersarangRangkuman: Kelola GudangRangkuman: Operasi HashMap6Alur Kontrol Lanjutan
Pernyataan LabelEkspresi SwitchPencocokan PolaKlausa PenjagaRingkasan Alur Kontrol9Proyek: Penghitung Kata Unik
Input dan Penyimpanan TeksPemrosesan KataLatihan sendiri: Compiler Java online