package com.yzy.map;

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

import org.junit.Test;

/**
 * @className TestHashMap.java
 * @author yangsir
 * @version V1.0
 * @date 2019年8月14日-上午8:11:49
 * @description HashMap的四种遍历方式
 */
public class TestHashMap {
	@Test
	public void test1() {
		// 迭代器遍历
		Map<String, String> map = new HashMap<String, String>();
		map.put("张三", "13574185296");
		map.put("李四", "13674185296");
		map.put("王五", "13774185296");
		map.put("赵六", "13874185296");
		Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();// 迭代器里面的类型为Map.Entry<String,String>,实例化迭代器,entrySet是返回Map里面元素的映射
		while (it.hasNext()) {
			Map.Entry<String, String> entry = it.next();// 定义一个Map.Entry<String, String>类型的entry去迭代
			System.out.println("姓名为:" + entry.getKey() + "手机号为:" + entry.getValue());// getKey获取键值,getValue获取值
		}
	}

	@Test
	// 增强for循环,在entrySet循环,取它每一次的key与value值(推荐),增强for循环的底层是基于迭代器的
	public void test2() {
		Map<String, String> map = new HashMap<String, String>();
		map.put("张三", "13574185296");
		map.put("李四", "13674185296");
		map.put("王五", "13774185296");
		map.put("赵六", "13874185296");
		for (Map.Entry<String, String> entry : map.entrySet()) {
			System.out.println("姓名为:" + entry.getKey() + "手机号为:" + entry.getValue());
		}
	}

	@Test
	// 分别输出key与value值
	public void test3() {
		Map<String, String> map = new HashMap<String, String>();
		map.put("张三", "13574185296");
		map.put("李四", "13674185296");
		map.put("王五", "13774185296");
		map.put("赵六", "13874185296");
		for (String key : map.keySet()) { // 增强for循环,输入单个的key
			System.out.println("姓名为:" + key);
		}

		for (String values : map.values()) {// 增强for循环,输入单个的values
			System.out.println("手机号为:" + values);
		}
	}

	@Test
	// 增强for循环,通过key来获取values,这种方法是低效的(不推荐)
	public void test4() {
		Map<String, String> map = new HashMap<String, String>();
		map.put("张三", "13574185296");
		map.put("李四", "13674185296");
		map.put("王五", "13774185296");
		map.put("赵六", "13874185296");
		for (String key : map.keySet()) {
			String values = map.get(key);
			System.out.println("姓名为:" + key + "手机号为:" + values);
		}
	}

}