HashMap的四中遍历方法

    HashMap中提供了entrySet()和keySet()两个放可以用来遍历map.其中entrySet()能够返回map中的一组Entry<key-value>作为元素的Set集合。获取到Set集合后就可以用itrator()或者foreach循环来遍历map集合,用entry.getKey();entry.getValue()来获取相应的key,value.keySet()能够返回一组以map的key作为元素的Set集合。获取到Set集合后就可以用itrator()或者foreach循环来遍历,遍历出来的元素为map的key值,如果想获取value,则用map.getValue(key);

在遍历速度方面使用entrySet()比keySet()的速度会较快。而同一种方法里面foreach比itrator快。

package test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
 * 
 * @author zhongliang
 * 这个类主要用来展示map遍历方法
 *
 */
public class TraverseMap {
	public static void main(String[] args) {
		HashMap<String, String> map = new HashMap<>(); 
         for(Integer i = 0; i < 10000000; i ++) {
            map.put(i.toString(), i.toString());
        }
        long time = System.currentTimeMillis();
        traverseByEntrySetItrator(map);
        long timeNow = System.currentTimeMillis();
        System.out.println("traverseByEntrySetItrator方法: " + (timeNow - time));
        
        time = System.currentTimeMillis();
        traverseByEntrySetFor(map);
        timeNow = System.currentTimeMillis();
        System.out.println("traverseByEntrySetFor方法: " + (timeNow - time));
        
        time = System.currentTimeMillis();
        traverseByKeySetItrator(map);
        timeNow = System.currentTimeMillis();
        System.out.println("traverseByKeySetItrator方法: " + (timeNow - time));
        
        time = System.currentTimeMillis();
        traverseByKeySetFor(map);
        timeNow = System.currentTimeMillis();
        System.out.println("traverseByKeySetFor方法: " + (timeNow - time));
	}
	
	/**
	 * 
	 * @Title: traverseByEntrySetItrator   
	 * @Description: 通过entrySet() + itrator()遍历map
	 * @param: @param map      
	 * @return: void      
	 * @throws
	 */
	public static void traverseByEntrySetItrator(Map<String, String> map) {
		Set<Entry<String, String>> entrySet = map.entrySet();
		Iterator<Entry<String, String>> it = entrySet.iterator();
		while(it.hasNext()) {
			Entry<String, String> next = it.next();
			next.getKey();
			next.getValue();
		}
	}
	/**
	 * 
	 * @Title: traverseByEntrySetFor   
	 * @Description:  通过entrySet() + foreach()遍历map
	 * @param: @param map      
	 * @return: void      
	 * @throws
	 */
	public static void traverseByEntrySetFor(Map<String, String> map) {
		Set<Entry<String, String>> entrySet = map.entrySet();
		for(Entry<String, String> en : entrySet) {
			en.getKey();
			en.getValue();
		}
	}
	
	/**
	 * 
	 * @Title: traverseByKeySet   
	 * @Description: 通过keySet() + itrator()遍历map
	 * @param: @param map      
	 * @return: void      
	 * @throws
	 */
	public static void traverseByKeySetItrator(Map<String, String> map) {
		Set<String> keySet = map.keySet();
		Iterator<String> it = keySet.iterator();
		while(it.hasNext()) {
			String key = it.next();
			map.get(key);
		}
	}
	
	/**
	 * 
	 * @Title: traverseByKeySetFor   
	 * @Description: 通过keySet() + foreach()遍历map
	 * @param: @param map      
	 * @return: void      
	 * @throws
	 */
	public static void traverseByKeySetFor(Map<String, String> map) {
		Set<String> keySet = map.keySet();
		for(String key : keySet) {
			map.get(key);
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值