Junior
Šta su HashMap i Set, i u kojim slučajevima je bolje koristiti ih?
sobes.tech АИ
Одговор од АИ
HashMap je kolekcija koja skladišti parove ključ-vrednost. Ključevi su jedinstveni, a vrednosti mogu da se ponove. Koristi heširanje za brzi (prosečno O(1)) pristup elementima putem ključa.
Set je kolekcija koja skladišti jedinstvene elemente. Ne garantuje redosled skladištenja, osim ako se koristi specifična implementacija (npr. LinkedHashSet). Operacije dodavanja, brisanja i provere prisustva elementa se uglavnom obavljaju u O(1). Postoje različite implementacije, na primer:
HashSet: Ne garantuje redosled elemenata.LinkedHashSet: Čuva redosled dodavanja.TreeSet: Čuva elemente u sortiranoj formi.
Kada koristiti:
- HashMap:
- Kada je potrebna efikasna pretraga, umetanje ili brisanje po ključu.
- Za skladištenje asocijativnih podataka (npr. rečnik).
- Kada je potrebno brzo proveriti da li vrednost postoji po ključu.
- Set:
- Kada je potrebno skladištiti samo jedinstvene elemente.
- Za efikasnu proveru prisustva elementa u kolekciji.
- Za operacije nad skupovima (unija, preseci).
Primer korišćenja HashMap:
// Kreiranje HashMap
HashMap<String, Integer> godine = new HashMap<>();
// Dodavanje elemenata
godine.put("Alice", 30);
godine.put("Bob", 25);
godine.put("Charlie", 35);
// Dobijanje vrednosti po ključu
int BobGodine = godine.get("Bob"); // BobGodine = 25
// Provera da li ključ postoji
boolean sadržiAlice = godine.containsKey("Alice"); // sadržiAlice = true
Primer korišćenja HashSet:
// Kreiranje HashSet
HashSet<String> imena = new HashSet<>();
// Dodavanje elemenata
imena.add("Alice");
imena.add("Bob");
imena.add("Charlie");
imena.add("Alice"); // Neće biti dodato, jer već postoji
// Provera da li element postoji
boolean sadržiBoba = imena.contains("Bob"); // sadržiBoba = true
// Iteracija kroz elemente
for (String ime : imena) {
System.out.println(ime);
}