logo

Як ітерувати будь-яку карту в Java

Загалом є п'ять способи ітерації над a Карта на Java. У цій статті ми розглянемо всі їх, а також розглянемо їх переваги та недоліки.
Перш за все ми не можна ітерувати карту безпосередньо за допомогою ітератори , оскільки Карта не є Колекція. Крім того, перш ніж йти далі, ви повинні знати дещо про Карта.Вхід інтерфейс.
Оскільки всі карти в Java реалізують Карта інтерфейс, наступні методи будуть працювати для будь-якої реалізації карти (HashMap, TreeMap, LinkedHashMap, Hashtable тощо)

1. Ітерація Map.entrySet() за допомогою циклу For-Each:
Map.entrySet() метод повертає представлення колекції( встановити ) відображень, які містяться на цій карті. Таким чином, ми можемо повторити пару ключ-значення за допомогою getKey() і getValue() методи Карта.Вхід . Цей метод є найпоширенішим і його слід використовувати, якщо вам потрібні як ключі карти, так і значення в циклі. Нижче наведено програму Java для демонстрації.



Java


анкіта локханде вік





// Java program to demonstrate iteration over> // Map.entrySet() entries using for-each loop> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using for-each loop for iteration over Map.entrySet()> >for> (Map.Entry entry : gfg.entrySet())> >System.out.println(>'Key = '> + entry.getKey() +> >', Value = '> + entry.getValue());> >}> }>



>

>

Вихід:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

2. Перебір ключів або значень за допомогою методів keySet() і values().
Map.keySet() метод повертає представлення Set ключів, що містяться в цій карті та Map.values() метод повертає представлення колекції значень, що містяться в цій карті. Отже, якщо вам потрібні лише ключі або значення з карти, ви можете перебирати keySet або значення за допомогою циклів for-each. Нижче наведено програму Java для демонстрації.

Java




// Java program to demonstrate iteration over> // Map using keySet() and values() methods> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using keySet() for iteration over keys> >for> (String name : gfg.keySet())> >System.out.println(>'key: '> + name);> > >// using values() for iteration over values> >for> (String url : gfg.values())> >System.out.println(>'value: '> + url);> >}> }>

>

>

використання Інтернету

Вихід:

key: Quiz key: Practice key: GFG key: Code value: www.techcodeview.com value: practice.techcodeview.com value: techcodeview.com value: code.techcodeview.com>

3. Ітерація за допомогою ітераторів Карта.Вхід
Цей спосіб чимось схожий на перший. У першому методі ми використовуємо цикл for-each над Map.Entry, але тут ми використовуємо ітератори . Використання ітераторів над Map.Entry має власну перевагу, тобто. ми можемо видалити записи з карти під час ітерації, викликавши iterator.remove() метод.

Java




// Java program to demonstrate iteration over> // Map using keySet() and values() methods> > import> java.util.Map;> import> java.util.HashMap;> import> java.util.Iterator;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// using iterators> >Iterator itr = gfg.entrySet().iterator();> > >while>(itr.hasNext())> >{> >Map.Entry entry = itr.next();> >System.out.println(>'Key = '> + entry.getKey() +> >', Value = '> + entry.getValue());> >}> >}> }>

>

>

Вихід:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

4. Використання методу forEach(action):
У Java 8 ви можете повторювати карту за допомогою Map.forEach(дія) спосіб і використання лямбда-вираз . Ця техніка чиста і швидка.

Java


java замінює весь рядок



// Java code illustrating iteration> // over map using forEach(action) method> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// forEach(action) method to iterate map> >gfg.forEach((k,v) ->System.out.println(>'Key = '> >+ k +>', Value = '> + v));> > >}> }>

>

>

Вихід:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

5. Ітерація по ключах і пошук значень (неефективно)
Тут спочатку ми перебираємо ключі (за допомогою Map.keySet() метод), а потім знайдіть значення (за допомогою Map.get(ключ) метод) для кожного ключа. Цей метод не використовується на практиці, оскільки він досить повільний і неефективний, оскільки отримання значень за ключем може зайняти багато часу.

Java




// Java program to demonstrate iteration> // over keys and searching for values> > import> java.util.Map;> import> java.util.HashMap;> > class> IterationDemo> {> >public> static> void> main(String[] arg)> >{> >Map gfg =>new> HashMap();> > >// enter name/url pair> >gfg.put(>'GFG'>,>'techcodeview.com'>);> >gfg.put(>'Practice'>,>'practice .techcodeview.com>);> >gfg.put(>'Code'>,>'code .techcodeview.com>);> >gfg.put(>'Quiz'>,>'www .techcodeview.com>);> > >// looping over keys> >for> (String name : gfg.keySet())> >{> >// search for value> >String url = gfg.get(name);> >System.out.println(>'Key = '> + name +>', Value = '> + url);> >}> >}> }>

>

сортування java arraylist

>

Вихід:

Key = Quiz, Value = www.techcodeview.com Key = Practice, Value = practice.techcodeview.com Key = GFG, Value = techcodeview.com Key = Code, Value = code.techcodeview.com>

Література: Переповнення стека