深入剖析加强for循环,哈希表

 test 1:

   数组:

               /**
	 * 增强for循环
	 */
	@Test
	public void test1() {
		int arr[] = { 1, 2, 3 };
		for (int i : arr) {
			System.out.println(i);
		}
	}

 test 2:

    列表:

   

	@Test
	public void test2() {
		List list = new ArrayList();
		list.add(1); // 自动包装
		list.add(2);
		list.add(3);
		for (Object obj : list) {
			int i = (Integer) obj;
			System.out.println(i);
		}
	}

test 3:

  哈希表:

  传统方式一:



 

                 /**
	 * 第一种方式取值
	 */
	@Test
	public void test3() {
		Map map = new HashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		// 传统方式1:
		Set set = map.keySet();
		Iterator it = set.iterator();
		while(it.hasNext()) {
			String key = (String) it.next();
			String value = (String) map.get(key);
			System.out.println(key + "=" + value);

		}
	}

 这时你会发现输出的值和输入值得位置不一样,我们可以用LinkedHashMap;

 加强for循环:

  

                             @Test
	public void test5() {
		Map map = new LinkedHashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		// 增强for取map的第1种方式
		for(Object obj : map.keySet() ){
			String key = (String) obj;
			String value = (String) map.get(key);
			System.out.println(key + "=" + value);
		}
	}

 哈希表:

  传统方式二:

 

 

	@Test
	public void test4() {
		Map map = new LinkedHashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		// 传统方式2:
		Set set = map.keySet();
		Iterator it = set.iterator();
		while (it.hasNext()) {
			Map.Entry entry = (Entry) it.next();
			String key = (String) entry.getKey();
			String value = (String) entry.getValue();
			System.out.println(key + "=" + value);
		}

	}

 加强for循环:

  

        @Test
	public void test6() {
		Map map = new LinkedHashMap();
		map.put("1", "aaa");
		map.put("2", "bbb");
		map.put("3", "ccc");
		// 增强for取map的第2种方式
		for (Object obj : map.entrySet()) {
			Map.Entry entry = (Entry) obj;
			String key = (String) entry.getKey();
			String value = (String) entry.getValue();
			System.out.println(key + "=" + value);
		}

	}

 注意加强for循环只适合取数据,并不改变数据;

例子:

@Test
	public void test1() {
		int arr[] = { 1, 2, 3 };
		for (int i : arr) {
			i = 10 ;
		}
		System.out.println(arr[0]);
		System.out.println(arr[1]);
		System.out.println(arr[2]);
	}

 你会发现输出的是1,2,3,只是将arr数组其中的值赋给i,再改变i就与数组无关了。

猜你喜欢

转载自1350579085.iteye.com/blog/1975832