1.Map.Entry说明html
Map是java中的接口,Map.Entry是Map的一个内部接口。java
Map提供了一些经常使用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。程序员
Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。code
2.Map.Entry使用htm
你是否已经对每次从Map中取得关键字而后再取得相应的值感受厌倦?使用Map.Entry类,你能够获得在同一时间获得全部的信息。标准的Map访问方法以下:对象
Set keys = map.keySet( );
if(keys != null) {
Iterator iterator = keys.iterator( );
while(iterator.hasNext( )) {
Object key = iterator.next( );
Object value = map.get(key);
;....
;}
} 接口
而后,这个方法有一个问题。从Map中取得关键字以后,咱们必须每次重复返回到Map中取得相对的值,这是很繁琐和费时的。开发
幸运的是,这里有一个更加简单的途径。Map类提供了一个称为entrySet()的方法,这个方法返回一个Map.Entry实例化后的对象集。 接着,Map.Entry类提供了一个getKey()方法和一个getValue()方法,所以,上面的代码能够被组织得更符合逻辑。举例以下:rem
Set entries = map.entrySet( );
if(entries != null) {
Iterator iterator = entries.iterator( );
while(iterator.hasNext( )) {
Map.Entry entry =iterator.next( );
Object key = entry.getKey( );
Object value = entry.getValue();
;....
}
}get
尽管增长了一行代码,咱们却省略了许多对Map没必要要的“get”调用。同时,提供给开发人员一个同时保持了关键字和其对应的值的类。Map.Entry同时也提供了一个setValue()方法,程序员可使用它修改map里面的值。
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class TestEntrySet { public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); map.put("1", "张三"); map.put("2", "李四"); map.put("3", "王五"); /*方法一 :迭代程序*/ System.out.println("方法一:"); Iterator iterator=map.entrySet().iterator(); while(iterator.hasNext()){ Map.Entry<String, String> entry= (Entry<String, String>) iterator.next(); System.out.println("key:"+entry.getKey()+" value"+entry.getValue()); } /*方法二*/ System.out.println("方法二:"); for (Map.Entry<String, String> m : map.entrySet()) { System.out.println("key:"+m.getKey()+" value"+m.getValue()); } } }
方法一: key:3 value王五 key:2 value李四 key:1 value张三 方法二: key:3 value王五 key:2 value李四 key:1 value张三
在API中解释:
返回此映射中包含的映射关系的 Set
视图。该 set 受映射支持,因此对映射的更改可在此 set 中反映出来,反之亦然。若是对该 set 进行迭代的同时修改了映射(经过迭代器本身的 remove 操做,或者经过对迭代器返回的映射项执行 setValue 操做除外),则迭代结果是不肯定的。set 支持元素移除,经过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操做可从映射中移除相应的映射关系。它不支持 add 或 addAll 操做。