Java中Map的四种遍历方式(超级详细的,有两个供参考的源码)

直接上源码,大家可以参考参考,还有一个源码与这个差不多,也可以看看
package com.my.maptest;

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

public class Test {
    public static void main(String[] args) {
		//Map的四种遍历方法
    	System.out.println("++++++++++方法一++++++++++");
    	//准备数据
    	Map<String,Integer> map=new HashMap<String,Integer>();
    	map.put("key1", 1);
    	map.put("key2", 2);
    	map.put("key3", 3);
  
    	//用两个for循环分别遍历键与值
    	//遍历所有的键
    	for(String content:map.keySet()) {
    		System.out.println(content);
    	}
    	//遍历所有的value
    	for(Integer value:map.values()) {
    		System.out.println(value);
    	}
    	System.out.println("++++++++++方法二++++++++++");
    	//通过键值来取value
    	for(String key:map.keySet()) {
    		System.out.println("键:"+key+"   "+"value"+map.get(key));//注意使用Map对象的get方法,
    		//参数是Object的Integer java.util.Map.get(Object key)
    	}
    	System.out.println("++++++++++方法三++++++++++");
    	//将每一个map的键与值看做是一个entry,将每个entry存进set集合里面
    	Set<Entry<String,Integer>> set=map.entrySet();//注意这里是要用map的entrySet方法才可以
    	//现在通过迭代器的方式遍历set集合
    	//public interface Iterator<E>,不能用new的方式
    	Iterator<Entry<String, Integer>> inerator=set.iterator();
        //迭代器使用while循环的方式来遍历
    	while(inerator.hasNext()) {
    		//遍历set集合,每个set集合里面存的是entry
    		Entry<String, Integer> entry=(Entry<String, Integer>)inerator.next();
    		System.out.println("键:"+entry.getKey()+"值:"+entry.getValue());
    	}
    	//通过foreach方式,效率与迭代器是一样的
    	System.out.println("++++++++++方法四++++++++++");
    	for(Entry<String,Integer> entry:map.entrySet()) {
    		System.out.println("键:"+entry.getKey()+"值:"+entry.getValue());
    	}
    	
	}
}
重新写的一个,更加的简洁了
package com.my.maptest;

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

public class MapTest {

	public static void main(String[] args) {
		System.out.println("----------Map的四种遍历方式----------");
		System.out.println("----------第一种 ----------");
		//准备数据,public interface Map<K,V>,public class HashMap<K,V>
		Map<Integer,String> map=new HashMap<Integer,String>();
		map.put(1, "A");
		map.put(2, "B");//map.put(1, "B");,如果有重复的key,输出只有一个key,虽然不会报错
		map.put(3, "C");
		//遍历所有的key+value,用两个for循环分别遍历
		//遍历所有的键,一个一个的key不允许重复,所以满足set的特征,所以用keySet
		for(Integer key:map.keySet()) {
			System.out.println("所有的key:"+key);
		}
		//遍历所有的value
		for(String value:map.values()) {
			System.out.println("所有的value:"+value);
		}
		System.out.println("----------第二种 ----------");
		//通过map中的key来取value
		for(Integer key:map.keySet()) {
			System.out.println("key:"+key+" "+"所对应的value:"+map.get(key));//String java.util.Map.get(Object key)
		}
		System.out.println("----------第三种 ----------");
		//将每个Map中的key与value看成一个一个的Entry,然后将一个一个的Entry放进Set集合中,public interface Set<E> 
		Set<Entry<Integer,String>> entrySet=map.entrySet();// interface Entry<K,V>
		//遍历Set集合即可,通过迭代器Iterator和增强for
		//获得entrySet的迭代器,注意加泛型
		Iterator<Entry<Integer,String>> iterator=entrySet.iterator();
		while(iterator.hasNext()) {//iterator.hasNext()是否有下一个元素
			//如果有下一个元素的话就取出该元素
			//取出元素
			Entry<Integer,String> entry=iterator.next();//通过next方法
			System.out.println("key:"+entry.getKey()+"对应的value:"+entry.getValue());
			
		}
		System.out.println("----------第四种 ----------");
		//增强for循环
		for(Entry<Integer,String> entry:map.entrySet()) {
			System.out.println("key:"+entry.getKey()+"对应的value:"+entry.getValue());
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值