关于map集合的遍历,还是有很多方式的,接下来就由我为大家,演示一下爱比较常用的关于map集合的遍历方式。
第一种遍历方式--键找值: 先获取map集合全部的键,在通过遍历键,来找值。
java
public static void main(String[] args) {
//第一种遍历方式 键找值
Map<String,Integer> map = new HashMap<>();
map.put("huawei",7999);
map.put("java入门课程",29);
map.put("redmi",1999);
map.put("oppo",3999);
map.put("vivi",899);
System.out.println(map);
// 获取所有的key
Set<String> keys = map.keySet();
Collection<Integer> values = map.values();
for (String key : keys) {
Integer value = map.get(key);
System.out.println(key +" ===> " + value);
}
}
/**
* {huawei=7999, vivi=899, oppo=3999, redmi=1999, java入门课程=29}
* huawei ===> 7999
* vivi ===> 899
* oppo ===> 3999
* redmi ===> 1999
* java入门课程 ===> 29
*/
这种方式遍历map集合的缺点就是,使用增强for循环遍历的时候,无法直接确定元素类型。
java
for(元素类型 keys: map){
...
}
第二种方式--键值对:
java
public static void main(String[] args) {
//第一种遍历方式 键值对
Map<String,Integer> map = new HashMap<>();
map.put("huawei",7999);
map.put("java入门课程",29);
map.put("redmi",1999);
map.put("oppo",3999);
map.put("vivi",899);
System.out.println(map);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+" ===> "+value);
}
}
/**
* {huawei=7999, vivi=899, oppo=3999, redmi=1999, java入门课程=29}
* huawei ===> 7999
* vivi ===> 899
* oppo ===> 3999
* redmi ===> 1999
* java入门课程 ===> 29
*/
第三种方式:Lamdba表达式: 这是jdk1.8开始之后的新技术(非常简单便捷)
java
public static void main(String[] args) {
//第一种遍历方式 lambda表达式遍历
Map<String,Integer> map = new HashMap<>();
map.put("huawei",7999);
map.put("java入门课程",29);
map.put("redmi",1999);
map.put("oppo",3999);
map.put("vivi",899);
System.out.println(map);
//匿名内部类
map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String key, Integer value) {
System.out.println(key +" ===> "+ value);
}
});
}
/**
* {huawei=7999, vivi=899, oppo=3999, redmi=1999, java入门课程=29}
* huawei ===> 7999
* vivi ===> 899
* oppo ===> 3999
* redmi ===> 1999
* java入门课程 ===> 29
*/
java
lamdba表达式简化写法1:
public static void main(String[] args) {
//第一种遍历方式 lambda表达式遍历
Map<String,Integer> map = new HashMap<>();
map.put("huawei",7999);
map.put("java入门课程",29);
map.put("redmi",1999);
map.put("oppo",3999);
map.put("vivi",899);
System.out.println(map);
//简化写法lamdba表达式
map.forEach((String key, Integer value) -> {
System.out.println(key +" ===> "+ value);
});
}
/**
* huawei ===> 7999
* vivi ===> 899
* oppo ===> 3999
* redmi ===> 1999
* java入门课程 ===> 29
*/
lamdba表达式简化写法2:
java
public static void main(String[] args) {
//第一种遍历方式 lambda表达式遍历
Map<String,Integer> map = new HashMap<>();
map.put("huawei",7999);
map.put("java入门课程",29);
map.put("redmi",1999);
map.put("oppo",3999);
map.put("vivi",899);
System.out.println(map);
map.forEach((key,value) -> System.out.println(key +" ===> "+ value));
}
/**
* huawei ===> 7999
* vivi ===> 899
* oppo ===> 3999
* redmi ===> 1999
* java入门课程 ===> 29
*/
第五种遍历方式--stream流:
java
public static void main(String[] args) {
//第四种遍历方式 stream流
Map<String,Integer> map = new HashMap<>();
map.put("huawei",7999);
map.put("java入门课程",29);
map.put("redmi",1999);
map.put("oppo",3999);
map.put("vivi",899);
System.out.println(map);
System.out.println("------------------");
map.entrySet().stream().forEach(e -> System.out.println(e));
}
/**
* huawei=7999
* vivi=899
* oppo=3999
* redmi=1999
* java入门课程=29
*/