利用 Iterator 输出 Map 集合|学习笔记

简介: 快速学习利用 Iterator 输出 Map 集合

开发者学堂课程【Java 高级编程利用 Iterator 输出 Map 集合】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/420


利用 Iterator 输出 Map 集合


对于集合的输出而言,最标准的做法就是利用 Iterator 接口来完成,但是需要明确一点的是在 Map 集合里面并没有一个方法可以直接返回 Iterator 接口对象。

所以这种情况下就必须分析不直接提供 Iterator 接口实例化的方法的原因,下面对Collection 与 Map 集合的存储结构进行一个比较。

发现在 Map 集合里面保存的实际上是一组 Map.Entry 接口对象(里面包装的是 Key 与 Value),所以整个来讲 Map 依然实现的是单值的保存,这样在 Map 集合里面提供有一个方法“public Set Map.Entry<K,V>> entrySet()”,将全部的Map 集合转为 Set 集合。

图片28.png

经过分析可以发现如果要想使用 Iterator 实现 Map 集合的输出则必须按照如下步骤处理:

利用 Map 接口中提供的 entrySet() 方法将 Map 集合转为 Set集合

利用 Set 接口中的 iterator() 方法将 Set 集合转为 Iterator 接口实例

利用 Iterator 进行迭代输出获取每一组的 Map.Entry 对象,随后通过 getKey() 与getValue() 获取数据。


范例:利用 Iterator 输出 Map 集合

package cn.mldn.demo;

import java.util.HashMap;

import java.util.Iterator;

import java.uti1.Map;

import java.uti1.set;

public class JavaAPIDemo i

public static void main(String[ ] args ) throws Exception {

Map<string,Integer> map = new HashMap<String,Integer>();

map.put( "one", 1);

map.put( "two",2);

Set<Map.Entry<String,Integer>> set = map.entrySet() ; //将Map集合变为Set集合Iterator<Map.Entry<String,Integer>> iter = set.iterator( ) ;

while (iter.hasNext()) i

Map.Entry<String, Integer> me = iter.next() ;

system.out.print1n(me.getKey() + " = " + me.getValue());

}

}

}

虽然 Map 集合本身支持有迭代输出的支持,但是如果从实际的开发来开发来讲,Map 集合最主要的用法在于实现数据的 key 查找操作,另外需要提醒的是,如果现在不使用 Iterator 而使用 foreach 语法输出则也需要将 Map 集合转为 Set 集合。


范例:使用 foreach 输出 Map 集合

package cn.mldn. demo;

import java.util.HashMap;

import java.uti1.Iterator;

import java.util.Map;

import java.util.set;

public class JavaAPIDemo {

public static void main(String[ ] args) throws Exception i

Map<String, Integer> map = new HashMap<String, Integer>();

map.put( "one", 1);

map.put( "two",2);

Set<Map.Entry<string,Integer>> set = map.entrySet() ; //将Map集合变为Set集合

for (Map.Entry<String,_Integer> entry : set) {

system.out.printin(entry.getKey() + " = '" + entry.getvalue());

}

}

}

由于 Map 迭代输出的情况相对较少,所以对于此类的语法应该深入

理解一下,并且一定要灵活掌握。

相关文章
|
2月前
|
Go 定位技术 索引
Go 语言Map(集合) | 19
Go 语言Map(集合) | 19
|
2月前
|
存储 前端开发 API
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
该文章详细介绍了ES6中Set和Map数据结构的特性和使用方法,并探讨了它们在前端开发中的具体应用,包括如何利用这些数据结构来解决常见的编程问题。
ES6的Set和Map你都知道吗?一文了解集合和字典在前端中的应用
|
1月前
|
存储 分布式计算 Java
Stream很好,Map很酷,但答应我别用toMap():Java开发中的高效集合操作
在Java的世界里,Stream API和Map集合无疑是两大强大的工具,它们极大地简化了数据处理和集合操作的复杂度。然而,在享受这些便利的同时,我们也应当警惕一些潜在的陷阱,尤其是当Stream与Map结合使用时。本文将深入探讨Stream与Map的优雅用法,并特别指出在使用toMap()方法时需要注意的问题,旨在帮助大家在工作中更高效、更安全地使用这些技术。
36 0
|
3月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
3月前
|
Java
【Java集合类面试二十二】、Map和Set有什么区别?
该CSDN博客文章讨论了Map和Set的区别,但提供的内容摘要并未直接解释这两种集合类型的差异。通常,Map是一种键值对集合,提供通过键快速检索值的能力,而Set是一个不允许重复元素的集合。
|
3月前
|
算法 Java 索引
【Java集合类面试四】、 描述一下Map put的过程
这篇文章详细描述了HashMap中put操作的过程,包括首次扩容、计算索引、插入数据以及链表转红黑树和可能的再次扩容。
【Java集合类面试四】、 描述一下Map put的过程
|
3月前
|
存储
|
3月前
|
安全 Java
【Java集合类面试五】、 如何得到一个线程安全的Map?
如何得到一个线程安全的Map的方法包括:使用Collections工具类将Map包装为线程安全,使用java.util.concurrent包下的ConcurrentHashMap,以及不推荐使用性能较差的Hashtable。
|
3月前
|
安全 Java
【Java集合类面试三】、Map接口有哪些实现类?
这篇文章介绍了Java中Map接口的几种常用实现类:HashMap、LinkedHashMap、TreeMap和ConcurrentHashMap,以及它们适用的不同场景和线程安全性。
|
4月前
|
存储 Go 索引
GO 集合 map 使用总结
GO 集合 map 使用总结
36 0