JavaSE第四十九讲:Map.Entry详解

    在上一讲 JavaSE第四十八讲:Map深入详解及遍历Map的两种实现手段 中已经介绍了第一种遍历Map的手段:利用keySet()方式得到key的信息的Set 集合,然后去遍历这个这个集合,取出每一个key,然后通过get方法就可以得到Map中的键值对的所有信息了。

这一讲将要说另外一种遍历Map的实现,这种方法相对第一种要更简单一些。

查看JDK Doc文档Map中的Map.Entry<K, V>


[注意:这是一个成员变量,这边Map.Entry表示的时候Entry是Map内部类]

内部类及实例内部类的写法:

public class A{

public classB{

}

}

A a = new A();

A.B b = new A.B();

[说明:其实内部类很复杂,这边只是大概一个概括,将来会有另起一讲专门将内部类的使用方法]

继续查看Map中跟Entry相关的方法:entrySet()

entrySet
Set<Map.Entry<K,V>> entrySet()

Returns a Set view of the mappings contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa.

[返回的是一个包含在Map当中的映射的Set视图],联系上一讲中第一种遍历Map的方法,keySet()返回Set视图,values()返回Collection视图。

联系以下程序,掌握其用法:

package com.ahuier2;

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

public class MapTest5 {
	public static void main(String[] args) {
		HashMap map = new HashMap();
		map.put("a", "aa");
		map.put("b", "bb");
		map.put("c", "cc");
		map.put("d", "dd");
		
		Set set = map.entrySet();
		for(Iterator iter = set.iterator(); iter.hasNext();){
			//这边要强制类型转换,所以要知道其子类型,这边可以知道其子类型为Map.Entry类型
			Map.Entry entry = (Map.Entry)iter.next();
			
			String key = (String)entry.getKey();
			String value = (String)entry.getValue();
			System.out.println(key + " : " + value);
		}
	}
}
编译执行结果:

d : dd
b : bb
c : cc
a : aa

Map.Entry这个类型维护着一对信息,其中一个是key,一个是value(getKey() 和 getValue())

getKey() Returns the key corresponding to this entry. [返回entry中的key信息]
getValue() Returns the value corresponding to this entry. [返回entry中的value信息]


结合上一讲第一种实现遍历Map方式(程序MapTest3),对比利用entry对象遍历Map方法,可以发现后者是通过entry对象所维护的键值,一下子拿到他们一对的信息,前者通过拿到Map中的键的信息,通过遍历Map中的键,然后取出相对于键的值,其实这两种实现方式外层看来有些不同,底层实现方式是有很多类似的。底层实现方式将在下一讲详细分析。在使用过程中,可以根据自己喜欢使用一种。


作业:

1. 随机生成50个数字(整数),每个数字的范围是[10, 50],统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来,如果某个数字出现次数为0,则不要打印它。打印时按照数字的升序排列。【使用集合实现,不允许使用数组。】


2. 策略模式(Strategy Pattern)。通过查询资料掌握策略模式的原理。

   在我们之前涉及到迭代器中发现:TreeSet是不会变化的,变化的是比较器,由比较器的变化引起了TreeSet中的变化的过程。这种模式称为:策略模式 


3. 阅读TreeMap的帮助文档,自己写一个程序,练习TreeMap的使用方式并且自己定义一个Comparator。 



你可能感兴趣的:(java,java,java,HashMap,HashMap,HashMap,iterator,iterator,entry,Map.Entry)