天天看點

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
	}



}