Sobes.tech
Junior

HashMap жана Set деген эмне, жана кайсы учурларда колдонуу жакшы?

sobes.tech AI

AIден жооп

HashMap - бул ачкыч-маани жуптуулары сакталган топтом. Ачкычтар уникалдуу, ал эми маанилер кайталанышы мүмкүн. Ал тез жетүү үчүн хештөө технологиясын колдонуп, орто эсеп менен O(1) убакытта иштейт.

Set - бул уникалдуу элементтерди сактаган топтом. Сактоо тартибин кепилдебейт, эгер конкреттүү реализация колдонулбаса (мисалы, LinkedHashSet). Киргизүү, өчүрүү жана элементтин бар-жогун текшерүү орто эсеп менен O(1). Ар кандай реализациялар бар, мисалы:

  • HashSet: элементтердин тартибин кепилдебейт.
  • LinkedHashSet: элементтердин кошулуу тартибин сактайт.
  • TreeSet: элементтерди сорттолгон тартипте сактайт.

Кайда колдонуу керек:

  • HashMap:
    • Эффективдүү издөө, кошуу же өчүрүү керек болсо, негизги колдонуу.
    • Байланыштуу маалыматтарды сактоо (мисалы, сөздүк).
    • Ачкыч боюнча маанинин бар-жогун тез текшерүү.
  • Set:
    • Тек гана уникалдуу элементтерди сактоо керек болсо.
    • Коллекцияда элементтин бар-жогун эффективдүү текшерүү.
    • Топтомдору менен операцияларды жүргүзүү (бириктирүү, кесилиш).

HashMap колдонуу мисалы:

// HashMap түзүү
HashMap<String, Integer> жаштар = new HashMap<>();

// Элементтерди кошуу
жаштар.put("Alice", 30);
жаштар.put("Bob", 25);
жаштар.put("Charlie", 35);

// Ачкыч боюнча маанини алуу
int Бобдунжашы = жаштар.get("Bob"); // Бобдунжашы = 25

// Ачкычтын бар-жогун текшерүү
boolean барбыAlice = жаштар.containsKey("Alice"); // барбыAlice = чын

HashSet колдонуу мисалы:

// HashSet түзүү
HashSet<String> аттар = new HashSet<>();

// Элементтерди кошуу
аттар.add("Alice");
аттар.add("Bob");
аттар.add("Charlie");
аттар.add("Alice"); // кошулбайт, себеби Alice алгачтан бар

// Элементтин бар-жогун текшерүү
boolean барбыBob = аттар.contains("Bob"); // барбыBob = чын

// Элементтер боюнча өтүү
for (String ат : аттар) {
    System.out.println(ат);
}