В Java итерацията върху Map може да се извърши по различни начини. Не забравяйте, че не можем да итерираме карта директно с помощта итератори , тъй като интерфейсът на картата не е част от колекцията. Всички карти в Java изпълняват Карта интерфейс. В Java има следните видове карти:
- HashMap
- TreeMap
- LinkedHashMap
Картата не е колекция, но все пак помислете за рамката на колекциите. Следователно картата е интерфейс, който не разширява интерфейса на колекциите.
Итератор
Итераторът е интерфейс, използван за итерация върху колекция. Той заема мястото на изброяването в Java Collections Framework. Разликата между итератор и изброяване е:
- Итераторът може да обхожда наследени и ненаследени елементи, докато изброяването може да обхожда само наследени елементи.
- Iterator е fail-fast, докато Enumeration не е fail-fast.
Изгледи на колекция
Методът за изгледи на колекция позволява картата да бъде разглеждана като колекция по следните начини:
Интерфейсът Map също има малък вложен интерфейс, наречен Map.entry . Изгледът на колекцията предоставя единственото средство за итерация върху карта.
java прехвърля char към низ
Използване на интерфейс на Iterator
Пример за итерация върху HashMap
каква е разликата между мегабайт и гигабайт
public static void main(String args[]) { HashMap hm = new HashMap(); //implements map interface hm.put(110,'Ravi'); hm.put(120,'Prateek'); hm.put(130, 'Davesh'); hm.put(140, 'Kamal'); hm.put(150, 'Pawan'); Iterator it = hm.keySet().iterator(); //keyset is a method while(it.hasNext()) { int key=(int)it.next(); System.out.println('Roll no.: '+key+' name: '+hm.get(key)); } } }
Изход:
Roll no.: 130 name: Davesh Roll no.: 150 name: Pawan Roll no.: 120 name: Prateek Roll no.: 140 name: Kamal Roll no.: 110 name: Ravi
Използване на метода keyset() и value().
набор от ключове(): А keySet() метод на HashMap клас се използва за итерация върху ключовете, съдържащи се в картата. Връща изгледа Set на ключовете.
Синтаксис
Set keyset()
стойности(): А стойности() метод на HashMap клас се използва за итерация върху стойностите, съдържащи се в картата. Връща изглед на колекция от стойностите.
Синтаксис
мрежов слой в компютърните мрежи
Collection values()
Пример
import java.util.Map; import java.util.HashMap; class IterationExample2 { public static void main(String[] arg) { Map map = new HashMap(); map.put('Gujarat', 'Gandhi Nagar'); map.put('Uttar Pradesh', 'Lucknow'); map.put('Sikkim', 'Ganagtok'); for (String State : map.keySet()) //using keyset() method for iteration over keySet System.out.println('State: ' + State); for (String Capital : map.values()) //using values() for iteration over keys System.out.println('Capiatl: ' + Capital); } }
Изход:
State: Gujarat State: Sikkim State: Uttar Pradesh Capital: Gandhi Nagar Capital: Ganagtok Capital: Lucknow
Използване на Map.entrymethod
Map.Entry е интерфейс. Той връща колекция изглед на картата, чиито елементи са от този клас.
Методът map.entrySet() връща изглед Set на картографирането, съдържащо се в картата. Промените в картата се отразяват и в комплекта и обратно. Той също така поддържа премахване на елемент, което премахва съответното картографиране от картата.
Синтаксис
Set<map.entry> entrySet() </map.entry>
Пример
компенсирана височина
import java.util.*; class IterationExample3 { public static void main(String[] arg) { Map map = new HashMap(); map.put('Cookies', 90.87f); map.put('Dry Fruits', 434.23f); map.put('Oats', 220.00f); map.put('Chocolate', 70.89f); for (Map.Entry entry : map.entrySet()) //using map.entrySet() for iteration { //returns keys and values respectively System.out.println('Item: ' + entry.getKey() + ', Price: ' + entry.getValue()); } } }
Изход:
Item: Oats, Price: 220.0 Item: Dry Fruits, Price: 434.23 Item: Cookies, Price: 90.87 Item: Chocolate, Price: 70.89
Итерация върху ключове и получаване на стойности
Пример
В следващия пример първо обикаляме ключовете и след това получаваме стойностите.
import java.util.*; class IterationExample4 { public static void main(String[] arg) { Map map = new HashMap(); map.put('Sumit', 'Singh'); map.put('Devesh', 'Mishra'); map.put('Rahul', 'Tiwari'); for (String name: map.keySet()) //iteration over keys { //returns the value to which specified key is mapped String lastname=map.get(firstname); System.out.println('Key: ' + name + ', Value: ' + lastname); } } }
Изход:
Key: Rahul, Value: Tiwari Key: Devesh, Value: Mishra Key: Sumit, Value: Singh
Използване на метода forEach().
The за всеки() метод на ArrayList се използва за извършване на действие за всеки елемент от Iterable, докато всички елементи бъдат обработени.
Синтаксис
public void forEach(Consumer action)
Методът приема действие (действието, което трябва да се извърши за всеки елемент) като параметър. Не връща нищо. Хвърля се NullPointerException ако указаното действие е нула.
Пример
наследяване в java
В следващия пример използваме ламбда израз в метода forEach(), за да отпечатаме всеки елемент от картата.
import java.util.Map; import java.util.HashMap; class IterationExample5 { public static void main(String[] arg) { Map map = new HashMap(); map.put('TCS', '0 billion'); map.put('Wipro', '.5 billion'); //iteration over map using forEach() method map.forEach((k,v) -> System.out.println('Company: '+ k + ', Net worth: ' + v)); } }
Изход:
Company: Wipro, Net worth: .5 billion Company: TCS, Net worth: 0 billion