Map集合遍历的2种方法(不能遍历Map集合,都是通过遍历Set集合)

本文详细介绍Java中Map集合的两种遍历方法:通过键找值及遍历键值对。首先,通过Set集合存储键并遍历获取值;其次,利用Entry对象遍历键值对,提供代码实例说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Map集合遍历键找值方式
键找值方式:即通过元素中的键,获取键所对应的值
操作步骤与图解:
1.获取Map集合中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键
在这里插入图片描述
2.遍历键的Set集合,得到每一个键
3.根据键,获取键所对应的值
在这里插入图片描述

package cn.itcast.demo01;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/*
 * Map集合的遍历
 * 	利用键获取值
 * 	Map接口中定义方法keySet
 *  所有的键,存储到Set集合
 */
public class MapDemo01 {
	public static void main(String[] args) {
		/*
		 * map集合中键不能遍历,故采取map集合的方法keySet,转成Set集合,才能遍历
		 * getClass()(Object类的方法,意味着每个子类都有这个方法)返回这个类的全名
		 * 
		 * 1.调用map集合的方法keySet,所有的键存储到Set集合中
		 * 2.遍历Set集合,获取Set集合中所有的元素(Map中的键) (可以用迭代器或者增强for循环来遍历Key)
		 * 3.调用map集合方法get,通过键获取到值
		 */
		Map<String,Integer> map = new HashMap<String,Integer>();
		map.put("a", 11);
		map.put("b", 12);
		map.put("c", 13);
		map.put("d", 14);
		
		//1.调用map集合的方法keySet,所有的键存储到Set集合中
		Set<String> set = map.keySet();
		//[d, b, c, a]
		System.out.println(set);
		//class java.util.HashMap$KeySet
		System.out.println("============================");
		System.out.println(set.getClass());
		System.out.println("============================");
		//2.遍历Set集合,获取出Set集合中的所有元素(Map中的键)
		Iterator<String> it = set.iterator();
		while(it.hasNext()){
			//it.next()返回Set集合元素,也就是Map中的键
			//3.调用Map集合方法get,通过键获取到值
			String key = it.next();
			Integer value = map.get(key);
			System.out.println(key + "..." + value);
		}
		//使用增强for循环来遍历Set集合,可发现增强for循环更加简洁
		//但是其实增强for循环编译后就是迭代器
		System.out.println("============================");
		//for(String key : set){
		for(String key : map.keySet()){
			Integer value = map.get(key);
			System.out.println(key + "..." + value);
		}
	}
}

在这里插入图片描述
Entry键值对对象
在Map类设计时,提供了一个嵌套接口:Entry。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。
在这里插入图片描述
 Entry是Map接口中提供的一个静态内部嵌套接口。
在这里插入图片描述
 getKey()方法:获取Entry对象中的键
 getValue()方法:获取Entry对象中的值
在这里插入图片描述
 entrySet()方法:用于返回Map集合中所有的键值对(Entry)对象,以Set集合形式返回。
Map集合遍历键值对方式
键值对方式:即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。
操作步骤与图解:
1.获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。
在这里插入图片描述
2.遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象
3.通过键值对(Entry)对象,获取Entry对象中的键与值。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:Map集合不能直接使用迭代器或者foreach进行遍历。但是转成Set之后就可以使用了。

package cn.itcast.demo01;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

/*
 * Map集合获取方法
 * entrySet方法,键值对映射关系(结婚证)获取
 * 实现步骤:
 * 		1.调用map集合方法entrySet()将集合中的映射关系对象,存储到Set集合
 * 			Set<Map.Entry<K,V>> entrySet()  
 * 		2.迭代Set集合
 * 		3.获取出的Set集合的元素,是映射关系对象
 * 		4.通过映射关系对象方法getKey,getValue获取键值对
 * 创建内部类对象: 外部类.内部类 = new
 * 创建内部接口对象:外部接口.内部接口
 */
public class MapDemo02 {
	public static void main(String[] args) {
		//Map中常用的集合(已知实现类)为HashMap集合、LinkedHashMap集合
		Map<Integer,String> map = new HashMap<Integer,String>();
		//V put(K key, V value) 
        //将指定的值与此映射中的指定键关联(可选操作)。 
		map.put(1, "abc");
		map.put(2, "bcd");
		map.put(3, "cde");
		//1.调用map集合方法entrySet()将集合中的映射关系对象,存储到Set集合
		Set<Map.Entry<Integer, String>> set = map.entrySet();
		//class java.util.HashMap$EntrySet
		//getClass()(Object类的方法,意味着每个子类都有这个方法)返回这个类的全名
		System.out.println(set.getClass());
		System.out.println("============================");
		System.out.println(set);
		System.out.println("============================");
		//2.迭代Set集合
		Iterator<Map.Entry<Integer, String>> it = set.iterator();
		while(it.hasNext()){
			//3.获取出的Set集合的元素,是映射关系对象
			//it.next()获取的是什么对象,取出来也是Map.Entry键值对对象
			Map.Entry<Integer, String> entry = it.next();
			//4.通过映射关系对象方法getKey(),getValue()获取键值对
			Integer key = entry.getKey();
			String value = entry.getValue();
			System.out.println(key + "..." + value);
		}	
		
		System.out.println("============================");
		//增强for循环,Iterable接口下所有实现类都能遍历,而Iterable下面子类没有Map
		//我们增强for循环是遍历set,不能遍历Map集合
		for(Map.Entry<Integer, String> entry : map.entrySet()){
			System.out.println(entry.getKey() + "..." + entry.getValue());
		}
	}
}

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值