Sobes.tech
Junior

Kako proći kroz sve vrednosti u Map?

sobes.tech АИ

Одговор од АИ

Постоји неколико начина за итерацију кроз Map у Јави.

  • Коришћење entrySet(): Најуниверзалнији начин, враћа Set парова кључ-вредност (Map.Entry). Може се прећи преко њега коришћењем итератора или за-језика.

    // Коришћење за-језика са entrySet()
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        String key = entry.getKey();
        Integer value = entry.getValue();
        // Обрада кључа и вредности
    }
    
  • Коришћење keySet(): Враћа Set свих кључева у Map. Затим се може добити вредност по сваком кључу.

    // Коришћење за-језика са keySet()
    for (String key : map.keySet()) {
        Integer value = map.get(key);
        // Обрада кључа и вредности
    }
    
  • Коришћење values(): Враћа Collection свих вредности у Map. Овај начин је користан када су потребне само вредности.

    // Коришћење за-језика са values()
    for (Integer value : map.values()) {
        // Обрада вредности
    }
    
  • Коришћење итератора: За entrySet(), keySet() и values() може се користити итератор.

    // Коришћење итератора са entrySet()
    Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()) {
        Map.Entry<String, Integer> entry = iterator.next();
        String key = entry.getKey();
        Integer value = entry.getValue();
        // Обрада кључа и вредности
    }
    
  • Коришћење Stream API (Java 8+): Савременији приступ, пружа моћне алате за обраду података.

    // Итерација коришћењем forEach() и Stream entrySet()
    map.entrySet().stream().forEach(entry -> {
        String key = entry.getKey();
        Integer value = entry.getValue();
        // Обрада кључа и вредности
    });
    
    // Итерација коришћењем forEach() и Stream keySet()
    map.keySet().stream().forEach(key -> {
        Integer value = map.get(key);
        // Обрада кључа и вредности
    });
    

Избор начина зависи од конкретног задатка и преференција. entrySet() често представља најефикаснији начин, јер избегава дупло претраживање вредности по кључу (као у случају са keySet() и map.get()). Stream API је погодан за сложеније операције.