Map集合的输出

总结思路:只要碰到了集合输出的操作,就一定使用Iterator接口,因为这是最标准的做法。

注意:输出key和value存放的集合接口不一样:
key 是Set集合
value 是Collection集合


package zz.mapdemo;

import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.Iterator;
// Map输出全部的key
public class IteratorDemo01{
	public static void main(String []args){
		Map<String, String> map = null;		// 声明Map对象,并指定泛型类型
		map = new HashMap<String, String>();	// 
		map.put("新浪网址:", "www.sina.com");	// 增加内容
		map.put("百度网址:", "www.baidu.com");	
		map.put("csdn网址:", "www.csdn.com");

		Set<String> keys = map.keySet();		// 得到全部的key变成Set集合
		Iterator<String> iter = keys.iterator();		// 实例化Iterator对象

		while (iter.hasNext()){
			String str = iter.next();	// 取出key
			System.out.println(str);	// 输出key
		}

	}
}

新浪网址:
csdn网址:
百度网址:

package zz.mapdemo;

import java.util.Map;
import java.util.HashMap;
//import java.util.Set;
import java.util.Iterator;
import java.util.Collection;	//values()方法返回类型是Collection
// Map输出全部的value
public class IteratorDemo02{
	public static void main(String []args){
		Map<String, String> map = null;		// 声明Map对象,并指定泛型类型
		map = new HashMap<String, String>();	// 
		map.put("新浪网址:", "www.sina.com");	// 增加内容
		map.put("百度网址:", "www.baidu.com");	
		map.put("csdn网址:", "www.csdn.com");

		Collection<String> values = map.values();		// 得到全部的value变为Collection集合
		Iterator<String> iter = values.iterator();		// 实例化Iterator对象

		while (iter.hasNext()){
			String str = iter.next();	
			System.out.println(str);	// 输出value
		}

	}
}

www.sina.com
www.csdn.com
www.baidu.com

注意:不能直接使用迭代输出Map中的全部内容
(1)、将Map接口的实例通过entrySet()方法变为Set接口对象
(2)、通过Set接口实例化为Iterator对象
(3)、通过Iterator迭代输出,每个内容都是Map.Entry的对象
(4)、通过Map.Entry进行key -> value的分离

package zz.mapdemo;

import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.Iterator;
// Map输出最标准的操作流程
public class IteratorDemo04{
	public static void main(String []args){
		Map<String, String> map = null;		// 声明Map对象,并指定泛型类型
		map = new HashMap<String, String>();	// 
		map.put("新浪网址:", "www.sina.com");	// 增加内容
		map.put("百度网址:", "www.baidu.com");	
		map.put("csdn网址:", "www.csdn.com");
		// 输出方式一:Iterator输出

		Set<Map.Entry<String, String>> allSet = null;
		allSet = map.entrySet();		// 将Map接口实例变为Set接口实例
		Iterator<Map.Entry<String, String>> iter = null;
		iter = allSet.iterator();		// 实例化Iterator对象

		while (iter.hasNext()){
			Map.Entry<String, String> me = iter.next();	// 找到Map.Entry的每对数据的实例
			System.out.println(me.getKey() + "-->" + me.getValue());	// 输出key 和 value
		}

		// 输出方式二:foreach输出
/* 
		for (Map.Entry<String, String> me : map.entrySet()){
			System.out.println(me.getKey() + "-->" + me.getValue());	// 输出key 和 value			
		}
*/
	}
}

新浪网址:-->www.sina.com
csdn网址:-->www.csdn.com
百度网址:-->www.baidu.com

### 如何在编程中输出Map集合 在Java中,`Map` 是一种键值对(Key-Value)的数据结构。要输出 `Map` 集合的内容,可以通过多种方式实现。以下是几种常见的方法,并附带代码示例。 #### 方法一:使用增强型 for 循环 通过增强型 for 循环遍历 `Map` 的 `entrySet()`,可以逐一访问每个键值对并输出。 ```java import java.util.HashMap; import java.util.Map; public class MapOutputExample1 { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Apple", 1); map.put("Banana", 2); map.put("Orange", 3); for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue()); } } } ``` 这种方法适用于需要同时访问键和值的场景[^1]。 #### 方法二:使用 forEach 方法(Java 8 及以上版本) 从 Java 8 开始,`Map` 接口提供了 `forEach` 方法,可以直接对键值对进行操作。 ```java import java.util.HashMap; import java.util.Map; public class MapOutputExample2 { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Apple", 1); map.put("Banana", 2); map.put("Orange", 3); map.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value)); } } ``` 这种方式更加简洁,适合函数式编程风格[^2]。 #### 方法三:将 Map 转换为 Stream 并输出 利用 Java 8 的 `Stream` API,可以将 `Map` 的 `entrySet()` 转换为流,并通过 `forEach` 方法输出。 ```java import java.util.HashMap; import java.util.Map; public class MapOutputExample3 { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Apple", 1); map.put("Banana", 2); map.put("Orange", 3); map.entrySet().stream() .forEach(entry -> System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue())); } } ``` 这种方法结合了流式处理的优势,适合需要进一步过滤或映射的场景[^3]。 #### 方法四:直接调用 toString() 方法 `Map` 类实现了 `toString()` 方法,默认会以 `{key=value, key=value}` 的形式输出所有键值对。 ```java import java.util.HashMap; import java.util.Map; public class MapOutputExample4 { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("Apple", 1); map.put("Banana", 2); map.put("Orange", 3); System.out.println(map.toString()); } } ``` 虽然这种方法简单,但输出格式不可定制,仅适用于调试用途。 ### 注意事项 - 如果需要对输出进行排序,可以在输出前对 `Map` 的 `entrySet()` 进行排序。 - 对于大容量的 `Map`,建议优化输出逻辑以避免性能问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值