在容器中使用增强的for循环,简洁大气,结构清晰


除了增强的for循环使代码简洁大气,结构清晰外,我们还可以看到对Map键值不同的取值方式的效率介绍。

在这儿也是对增强for循环的相见恨晚啊!




之前的使用情况

package map;

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

public class EntryOfMap {
	/*
	 * Set<Map.Entry<K,V>>entrySet() 返回此映射中包含的映射关系的 set 视图。
	 * 
	 */
	public static void main(String[] args) {
		String str[] = "java java platform is is is is perfect".split(" ");
		statistics(str);
	}

	public static void statistics(String str[]) {
		Map<String, Integer> m = new HashMap<String, Integer>();// 用HashMap,因为Hash的查找快
		for (int i = 0; i < str.length; i++) {
			Integer freq = m.get(str[i]);
			m.put(str[i], freq == null ? 1 : freq + 1);
		}
		// 效率高
		Set<Map.Entry<String, Integer>> set = m.entrySet();
		Iterator<Map.Entry<String, Integer>> it = set.iterator();
		// 下面这一句等价于上面的两句
		// Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Integer> me = it.next();
			System.out.println(me.getKey() + " " + me.getValue());// 直接获取键和值
		}
		// 效率低
		Iterator<String> iter = m.keySet().iterator();
		while (iter.hasNext()) {
			String s = iter.next();
			System.out.println(s + " " + m.get(s));
		}

	}
}



使用增强的for循环

package map;

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


public class EntryOfMap2{
	/*
	 * 在EntryOfMap.java的基础上使用增强for循环对代码进行了优化
	 * 由于增强for循环的使用:这样的代码就非常的简洁了哦
	 */
	public static void main(String[] args) {
		String str[] = "java java platform is is is is perfect".split(" ");
		statistics(str);
	}

	public static void statistics(String str[]) {
		Map<String, Integer> m = new HashMap<String, Integer>();// 用HashMap,因为Hash的查找快
		for (int i = 0; i < str.length; i++) {
			Integer freq = m.get(str[i]);
			m.put(str[i], freq == null ? 1 : freq + 1);
		}
		// 用Map.Entry效率高
		for (Map.Entry<String, Integer> me : m.entrySet())
			System.out.println(me.getKey() + " " + me.getValue());
		// 通过键来取值效率低
		for (String s : m.keySet())
			System.out.println(s + " " + m.get(s));

	}
}


也就是比较这两段代码

1.
		// 效率高
		Set<Map.Entry<String, Integer>> set = m.entrySet();
		Iterator<Map.Entry<String, Integer>> it = set.iterator();
		// 下面这一句等价于上面的两句
		// Iterator<Map.Entry<String, Integer>> it = m.entrySet().iterator();
		while (it.hasNext()) {
			Map.Entry<String, Integer> me = it.next();
			System.out.println(me.getKey() + " " + me.getValue());// 直接获取键和值
		}
		// 效率低
		Iterator<String> iter = m.keySet().iterator();
		while (iter.hasNext()) {
			String s = iter.next();
			System.out.println(s + " " + m.get(s));
		}
------------------这个比较式非常的明显啊---------------------------------2.
		// 用Map.Entry效率高
		for (Map.Entry<String, Integer> me : m.entrySet())
			System.out.println(me.getKey() + " " + me.getValue());
		// 通过键来取值效率低
		for (String s : m.keySet())
			System.out.println(s + " " + m.get(s));




.

你可能感兴趣的:(java)