java Map及Map.Entry详解

转载 2013年12月05日 15:43:23

Map是java中的接口,Map.Entry是Map的一个内部接口。

         Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值的集合;entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。

         Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法。

 由以上可以得出,遍历Map的常用方法:

1、

          Map map = new HashMap();
          Iterator iterator = map.entrySet().iterator();
          while(iterator.hasNext()) {
            Map.Entry entry = iterator.next();
            Object key = entry.getKey();
          }

2、


Map map = new HashMap(); 
Set  keySet= map.keySet();
Irerator iterator = keySet.iterator;
while(iterator.hasNext()) {
   Object key = iterator.next();
   Object value = map.get(key);
}

3、另外,还有一种遍历方法是,单纯的遍历value值,Map有一个values方法,返回的是value的Collection集合。通过遍历collection也可以遍历value,如:

Map map = new HashMap();
Collection c = map.values();
Iterator iterator = c.iterator();
while(iterator.hasNext()) {
    Object value = iterator.next(); 
}

4、

Map<Integer,String> g = new HashMap<Integer,String>();
g.put(1,"1");
g.put(2,"2");
for(Map.Entry<Integer, String> entry:g.entrySet()){
   System.out.println(entry.getValue());
}

----------------------------------------------------------------------------------------------------------

Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。该接口描述了从不重复的键到值的映射。


  (1) 添加、删除操作:
  Object put(Object key, Object value): 将互相关联的一个关键字与一个值放入该映像。如果该关键字已经存在,那么与此关键字相关的新值将取代旧值。方法返回关键字的旧值,如果关键字原先并不存在,则返回null
  Object remove(Object key): 从映像中删除与key相关的映射
  void putAll(Map t): 将来自特定映像的所有元素添加给该映像
  void clear(): 从映像中删除所有映射
  “键和值都可以为null。但是,您不能把Map作为一个键或值添加给自身。”
  (2) 查询操作:
  Object get(Object key): 获得与关键字key相关的值,并且返回与关键字key相关的对象,如果没有在该映像中找到该关键字,则返回null
  boolean containsKey(Object key): 判断映像中是否存在关键字key
  boolean containsValue(Object value): 判断映像中是否存在值value
  int size(): 返回当前映像中映射的数量
  boolean isEmpty() :判断映像中是否有任何映射
  (3) 视图操作 :处理映像中键/值对组
  Set keySet(): 返回映像中所有关键字的视图集
  “因为映射中键的集合必须是唯一的,您用Set支持。你还可以从视图中删除元素,同时,关键字和它相关的值将从源映像中被删除,但是你不能添加任何元素。”
  Collection values():返回映像中所有值的视图集
  “因为映射中值的集合不是唯一的,您用Collection支持。你还可以从视图中删除元素,同时,值和它的关键字将从源映像中被删除,但是你不能添加任何元素。”
  Set entrySet(): 返回Map.Entry对象的视图集,即映像中的关键字/值对
  “因为映射是唯一的,您用Set支持。你还可以从视图中删除元素,同时,这些元素将从源映像中被删除,但是你不能添加任何元素。”
  Map.Entry接口
  Map的entrySet()方法返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。

  通过这个集合的迭代器,您可以获得每一个条目(唯一获取方式)的键或值并对值进行更改。当条目通过迭代器返回后,除非是迭代器自身的remove()方法或者迭代器返回的条目的setValue()方法,其余对源Map外部的修改都会导致此条目集变得无效,同时产生条目行为未定义。
  (1) Object getKey(): 返回条目的关键字
  (2) Object getValue(): 返回条目的值
  (3) Object setValue(Object value): 将相关映像中的值改为value,并且返回旧值

例子:

Map<String,Integer> map=new HashMap<String,Integer>();   
map.put("1", 1);   
map.put("2", 2);   
map.put("3", 3);   
map.put("3", 3);       
Iterator itor=map.entrySet().iterator();   
while(itor.hasNext()){   
  Map.Entry<String,Integer> entry=(Map.Entry<String,Integer>)itor.next();   
  System.out.println("key="+entry.getKey().toString());   
  System.out.println("values="+entry.getValue().toString());   
}



Map.entry详解

Map.entrySet() 这个方法返回的是一个Set>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项(里面有Key和Value),而Set>表示一个映射项的Set。Map.E...
  • kyi_zhu123
  • kyi_zhu123
  • 2016年10月09日 19:00
  • 1637

Map与Map.Entry的关系

Map与Map.Entry的区别: 1.首先,说一下Map.Entry与Map的关系。 Map.Entry是Map的内部类。即(关系图) class Map{ class Entry{ } } ...
  • ZZh1301051836
  • ZZh1301051836
  • 2015年12月06日 20:23
  • 1069

Map.Entry使用详解

1.Map.Entry说明 Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()...
  • u011494050
  • u011494050
  • 2014年05月27日 09:39
  • 1424

java entry

我希望要一个ArrayList,类似C++中的pair, 但是Map.Entry是个接口,不能实例化,可以像下面这样写 HashMap G = new HashMap();...
  • sunmenggmail
  • sunmenggmail
  • 2013年05月20日 22:08
  • 10249

Java对HashMap中的Entry实体根据Key或者Value进行排序

前几天在写代码时候遇见对Map中元素根据Value排序的情景,就想抽空花点时间认真学习巩固总结一下。 说道排序,我们无非还是得和比较说起,没有比较何有顺序!在Java中可以参与比较的两个接口莫非是:...
  • Dax1n
  • Dax1n
  • 2017年03月14日 16:54
  • 653

接口java.util.Map.Entry的使用

Map是java中的接口,Map.Entry是Map的一个内部接口。java.util.Map.Entry接口主要就是在遍历map的时候用到。 Map提供了一些常用方法,如keySet()、entr...
  • a416090287
  • a416090287
  • 2013年05月31日 22:20
  • 10256

java中的 Map.Entry接口与map的遍历方式

这里为了一般性我那HashMap举例 首先HashMap的底层实现用的时候一个Entry数组,废话不多说上源码 /** * The table, resized as necessar...
  • afeiluo
  • afeiluo
  • 2013年10月05日 20:32
  • 8034

java Map及Map.Entry详解

Map是java中的接口,Map.Entry是Map的一个内部接口。 Map提供了一些常用方法,如keySet()、entrySet()等方法。 keySet()方法返回值是Map中key...
  • E01014165
  • E01014165
  • 2016年05月26日 21:50
  • 1018

Java中Map和Set之间的关系(及Map.Entry)

1、通过查找API文档: 2、Map.Entry是一个接口,所以不能直接实例化。 3、Map.entrySet( )返回的是一个collection集合,并...
  • G_66_hero
  • G_66_hero
  • 2017年04月15日 00:39
  • 1010

java中map 9种常规用法

通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的。下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题。 0、将Map转换为List类型 在j...
  • sunny243788557
  • sunny243788557
  • 2016年10月13日 14:33
  • 14144
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java Map及Map.Entry详解
举报原因:
原因补充:

(最多只允许输入30个字)