[2025.1.12 JavaSE学习]集合-6(Map接口遍历方式 && 底层机制和方法)

Map的遍历方式

设计的方法

  • containKey:查找键是否存在
  • keySet:获取所有的键
  • entrySet:获取所有的k-v
  • values:获取所有的值
@SuppressWarnings({"all"})
public class MapFor{
	public static void main(Stirng[] args){
		Map map = new HashMap();
		
		//1、先取出key,通过key取出值
		Set keyset = map.keySet();
		for(Object key: keyset){
			System.out.println(map.get(key));
		}
		
		//2、通过迭代器
		Iterator iterator = keySet.iterator();
		while(iterator.hasNext()){
			Object next = iterator.next();
			Object value = map.get(key);
		}
		
		//3、直接取得value
		Collection values = map.values();
		//使用for、iterator等遍历
		
		//4、通过EntrySet EntrySet<Map.Entry<K,V>>
		Set entryset = map.entrySet();
		for(Object o: entrySet){
			//将entry转为Map.Entry
			Map.Entry m = (Map.Entry)entry;
			Object key = m.getKey();
			Object value = m.getValue();
		}
		
		//entryset使用迭代器
		Iterator iterator_ = entrySet.iterator();
		while(iterator_.hasNext()){
			Object next = iterator_.next();
			System.out.println(next.getClass());
			//这里打印为HashMap$Node,实际上存储的是Node,但是因为Node实现了Entry接口,
			//所以可以多态存储在EntrySet当中
			//此处next为Object,需要向下转型至Map.Entry
			Map.Entry mp = (Map.Entry)next;
			Object key = m.getKey();
			Object value = m.getValue();
		}
	}
}

Map底层机制

此部分和HashSet基本相同,HashSet就是基于HashMap实现的,HashSet 的元素实际上是 HashMap 的 key,而 HashMap 的 value 是一个固定的占位对象(PRESENT)

posted @   Luna-Evelyn  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示