Загалом є п'ять способи ітерації над a Карта на Java. У цій статті ми розглянемо всі їх, а також розглянемо їх переваги та недоліки.
Перш за все ми не можна ітерувати карту безпосередньо за допомогою ітератори , оскільки Карта не є Колекція. Крім того, перш ніж йти далі, ви повинні знати дещо про Карта.Вхід інтерфейс.
Оскільки всі карти в Java реалізують Карта інтерфейс, наступні методи будуть працювати для будь-якої реалізації карти (HashMap, TreeMap, LinkedHashMap, Hashtable тощо)
1. Ітерація Map.entrySet() за допомогою циклу For-Each:
Map.entrySet() метод повертає представлення колекції( встановити
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>
Література: Переповнення стека