本文概述
- 迭代器
- 使用迭代器界面
- 使用keyset()和value()方法
- 使用Map.entry < K, V> 方法
- 迭代键并获取值
- 使用forEach()方法
- 哈希图
- 树状图
- LinkedHashMap
迭代器迭代器是用于对集合进行迭代的接口。它代替了Java Collections Framework中的枚举。迭代器和枚举之间的区别是:
- 迭代器可以遍历旧元素和非旧元素, 而枚举只能遍历旧元素。
- 迭代器是快速失败的, 而枚举不是快速失败的。
【如何在Java中遍历Map】集合视图方法允许通过以下方式将地图视为集合:
- keySet:它是Map中包含的一组键。
- values:它是Map中包含的值的集合。
- entrySet:它是Map中的一组键/值对。
使用迭代器界面通过HashMap进行迭代的示例
public static void main(String args[]){HashMap<
Integer, String>
hm = new HashMap<
Integer, String>
();
//implements map interfacehm.put(110, "Ravi");
hm.put(120, "Prateek");
hm.put(130, "Davesh");
hm.put(140, "Kamal");
hm.put(150, "Pawan");
Iterator <
Integer>
it = hm.keySet().iterator();
//keyset is a methodwhile(it.hasNext()){int key=(int)it.next();
System.out.println("Roll no.: "+key+"name: "+hm.get(key));
}}}
输出:
Roll no.: 130name: DaveshRoll no.: 150name: PawanRoll no.: 120name: PrateekRoll no.: 140name: KamalRoll no.: 110name: Ravi
使用keyset()和value()方法keyset():HashMap类的keySet()方法用于对地图中包含的键进行迭代。它返回键的“设置”视图。
句法
Set<
K>
keyset()
values():HashMap类的values()方法用于对地图中包含的值进行迭代。它返回值的集合视图。
句法
Collection<
V>
values()
例
import java.util.Map;
import java.util.HashMap;
class IterationExample2 { public static void main(String[] arg) { Map<
String, String>
map = new HashMap<
String, String>
();
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 keySetSystem.out.println("State: " + State);
for (String Capital : map.values())//using values() for iteration over keysSystem.out.println("Capiatl: " + Capital);
} }
输出:
State: GujaratState: SikkimState: Uttar PradeshCapital: Gandhi NagarCapital: GanagtokCapital: Lucknow
使用Map.entry < K, V> 方法Map.Entry < K, V> 是一个接口。它返回地图的集合视图, 其元素属于此类。
map.entrySet()方法返回地图中包含的映射的Set视图。地图中的更改也会反映在Set中, 反之亦然。它还支持元素删除, 这会从地图中删除相应的映射。
句法
Set<
Map.Entry<
K, V>
>
entrySet()
例
import java.util.*;
class IterationExample3 { public static void main(String[] arg) { Map<
String, Float>
map = new HashMap<
String, Float>
();
map.put("Cookies", 90.87f);
map.put("Dry Fruits", 434.23f);
map.put("Oats", 220.00f);
map.put("Chocolate", 70.89f);
for (Map.Entry<
String, Float>
entry : map.entrySet()) //using map.entrySet() for iteration{//returns keys and values respectivelySystem.out.println("Item: " + entry.getKey() + ", Price: " + entry.getValue());
} }}
输出:
Item: Oats, Price: 220.0Item: Dry Fruits, Price: 434.23Item: Cookies, Price: 90.87Item: Chocolate, Price: 70.89
迭代键并获取值例
在下面的示例中, 我们首先遍历键, 然后获取值。
import java.util.*;
class IterationExample4 { public static void main(String[] arg) { Map<
String, String>
map = new HashMap<
String, String>
();
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 mappedString lastname=map.get(firstname);
System.out.println("Key: " + name + ", Value: " + lastname);
} }}
输出:
Key: Rahul, Value: TiwariKey: Devesh, Value: MishraKey: Sumit, Value: Singh
使用forEach()方法ArrayList的forEach()方法用于对Iterable的每个元素执行操作, 直到处理完所有元素为止。
句法
public void forEach(Consumer<
? super E>
action)
该方法将动作(每个元素要执行的动作)作为参数。它不返回任何东西。如果指定的操作为null, 则抛出NullPointerException。
例
在下面的示例中, 我们在forEach()方法中使用lambda表达式来打印地图的每个元素。
import java.util.Map;
import java.util.HashMap;
class IterationExample5 { public static void main(String[] arg) { Map<
String, String>
map = new HashMap<
String, String>
();
map.put("TCS", "$100 billion");
map.put("Wipro", "$21.5 billion");
//iteration over map using forEach() methodmap.forEach((k, v) ->
System.out.println("Company: "+ k + ", Net worth: " + v));
} }
输出:
Company: Wipro, Net worth: $21.5 billionCompany: TCS, Net worth: $100 billion
推荐阅读
- 如何在Java中合并两个数组
- 如何在Java中从用户获取输入
- 如何用Java创建文件
- 如何在Java中将字节数组转换为String
- 如何编译和运行Java程序
- “双 亲 委 派 机 制”
- 我司Spring Boot 项目打包 + Shell 脚本部署详细总结,太有用了!
- 作为Java开发,知道HashMap底层存储原理总不会害你!
- 图文详解压力测试工具JMeter的安装与使用