天天看点

java增强for循环遍历Map集合问题

package Day01;
           
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;

import org.junit.Test;

public class Day01 {

	@Test
	public void test1() {
		// 使用HashMap()存入与取出顺序不一定一致。
		Map m = new HashMap();
		m.put("1", "aaa");
		m.put("2", "bbb");
		m.put("3", "ccc");
		// 传统方式1取出Map集合数据,用keySet()封装只包含key的Set集合,然后用iterator迭代Set集合即可取出key。
		Set keys = m.keySet();
		Iterator it = keys.iterator();
		while (it.hasNext()) {
			String key = (String) it.next();
			String value = (String) m.get(key);
			System.out.println(key + "=" + value);
		}
	}
	@Test
	public void test2() {
		// 使用HashMap()存入与取出顺序不一定一致。
		Map m = new HashMap();
		m.put("1", "aaa");
		m.put("2", "bbb");
		m.put("3", "ccc");
		// 增强for循环1取出Map集合数据。
		for(Object obj:m.keySet()){
			String key=(String) obj;
			String value=(String) m.get(key);
			System.out.println(key + "=" + value);
		}

	}
	@Test
	public void test3() {
		// 使用LinkedHashMap()存入与取出顺序一致。
		Map m = new LinkedHashMap();
		m.put("1", "aaa");
		m.put("2", "bbb");
		m.put("3", "ccc");
		// 传统方式2取出Map集合数据,用entrySet()封装成键值对的Set集合,然后用iterator取出Map.Entry。然后在通过getKey()和getValue()方法取值
		Set keys = m.entrySet();
		Iterator iterator = keys.iterator();
		while (iterator.hasNext()) {
			Map.Entry entry = (Entry) iterator.next();
			String key = (String) entry.getKey();
			String value = (String) entry.getValue();
			System.out.println(key + "=" + value);
		}
	}
	@Test
	public void test4() {
		Map m = new LinkedHashMap();
		m.put("1", "aaa");
		m.put("2", "bbb");
		m.put("3", "ccc");
		// 增强for循环2取出Map集合数据,
		for(Object obj:m.entrySet()){
			Map.Entry entry=(Entry) obj;
			String key=(String) entry.getKey();
			String value=(String) entry.getValue();
			System.out.println(key + "=" + value);
		}
	}
	@Test
	public void test5() {
		//增强for循环只适合取数据。如果想改变数据用传统方式。
		int arr[]={1,2,3};
		for(int i:arr){
			i=10;
		}
		System.out.println(arr[0]);//输出仍未1
		for(int i=0;i<arr.length;i++){
			arr[i]=10;
		}
		System.out.println(arr[0]);//输出均为10
	}



}