Java中如何遍历Map呢?

在Javascript中 遍历 key:value关系的对象时,有这样的方法:

var obj = {
      id:'123456789',
     name:'hank',
     age:22
};
for(var i=0,len = obj.length;i<len;i++){
     console.log(obj[i]);
}

或者遍历其属性和值

for(var i in obj){
    console.log("key="+i+"    value是"+obj[i]);
}

但在Java中遍历像Map这样的key:value关系的时候又怎么做呢? 一下是4种遍历方法,并添加两种map<String,ArrayList<String>>的方法

package mapPractice;

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

/**
 * @Detail : 循环遍历Map的方法
 * @Author: 韩庆
 * @E-mail: IsaidIwillgoon@gmail.com
 * @Date: 2012-11-9
 * @Time: 下午8:48:01
 * 
 */
public class MapToTraverse {

	/**
	 * 用于得到键值-可以对键值做相应的处理
	 * 
	 * @return 处理键值关系后的字符
	 */
	public String getKeyAndValue(Map<String, String> map) {

		StringBuilder sb = new StringBuilder("结果是:{");
		// 利用hashmap中的entrySet()方法实现遍历
		Iterator<Entry<String, String>> it = map.entrySet().iterator();
		// 内部处理键值关系--以出键值关系为例
		while (it.hasNext()) {
			Map.Entry<String, String> entry = (Entry<String, String>) it.next();
			Object key = entry.getKey();
			Object value = entry.getValue();
			sb.append(key).append(":").append(value).append(",");// 因为Object隐式的调用toString()
																	// 我就不写了
		}

		return sb.substring(0, sb.length() - 1).concat("}");// 截取最后一个","并拼接“}”
	}

	public String getKeyAndValue2(Map<String, String> map) {
		StringBuilder sb = new StringBuilder("结果是:{");
		// for循环遍历 这是JDK1.5中的for-each
		for (Map.Entry<String, String> entry : map.entrySet()) {
			String key = entry.getKey();
			String value = entry.getValue();
			sb.append(key).append(":").append(value).append(",");
		}

		return sb.substring(0, sb.length() - 1).concat("}");
	}

	public String getKeyAndValue3(Map<String, String> map) {
		StringBuilder sb = new StringBuilder("结果是:{");
		// 利用 hashmap的keySet()方法
		for (Iterator<String> it = map.keySet().iterator(); it.hasNext();) {
			Object key = it.next();
			String value = map.get(key);// key隐式转换为Stirng
			sb.append(key).append(":").append(value).append(",");
		}

		return sb.substring(0, sb.length() - 1).concat("}");
	}

	public String getKeyAndValue4(Map<String, String> map) {
		StringBuilder sb = new StringBuilder("结果是:{");
        //这种方法老像 javascript中的for in 了  
		for (Object key : map.keySet()) {
			String value = map.get(key);
			sb.append(key).append(":").append(value).append(",");
		}

		return sb.substring(0, sb.length() - 1).concat("}");
	}

	/********************************************************
	 * Java中又是如何遍历Map<String,ArrayList> map = new HashMap<String,ArrayList<String>>()的呢?
	 *******************************************************/
	public String getMapForStringAndArrayList(Map<String,ArrayList<String>> map){
		
		//一下两个方法均在上述几个方法基础上 再次循环遍历其元素
		Set<String> keys = map.keySet();
		Iterator<String> it = keys.iterator();
		while(it.hasNext()){
			String key = it.next();
			ArrayList<String> arrayList = map.get(key);
			for(Object value : arrayList){
				System.out.println(value);
			}
			//这里可以处理键值关系
		}
		
		for(Map.Entry<String, ArrayList<String>> entry : map.entrySet()){
			String key = entry.getKey();
			List<String> lists = entry.getValue();
			for(String value : lists){
                System.out.println(key+":"+value);				
			}
			//这里可以处理键值关系
		}
		
		
		return null;
	}
	
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("id", "123456789");
		map.put("name", "hank");
		map.put("sex", "male");
		MapToTraverse mtt = new MapToTraverse();
		System.out.println(mtt.getKeyAndValue2(map));
	}
}

以上代码的方法参考了网上的一些源代码。贴在这里以供自己以后查看。 并上传java文件于资源中供下载。//以上纯手敲,错误难免微笑。今天心情不是很好,不写了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值