黑马程序员技术交流社区

标题: 泛型的一些小疑惑已解决 [打印本页]

作者: 常佳杰    时间: 2012-6-18 08:07
标题: 泛型的一些小疑惑已解决
本帖最后由 常佳杰 于 2012-6-18 09:17 编辑

HashMap<String,Integer> hm = new HashMap<String,Integer>();//泛型的综合案例
hm.put("jjj",21);//插入数据
hm.put("asdf",26);
Set<Map.Entry<String,Interger>> entrySet = hm.entrySet();//hm.entrySet()的重要作用是什么呀?
for(Map.Entry<String,Integer> entry : entrySet){
     System.out.println(entry.getKey() + ":" + entry.getValue();
}//
作者: 李元峰    时间: 2012-6-18 08:28
public Set<Map.Entry<K,V>> entrySet()返回此映射所包含的映射关系的 Set 视图。 该 set 受映射支持,所以对映射的更改将反映在此 set 中,反之亦然。如果在对 set 进行迭代的同时修改了映射(通过迭代器自己的 remove 操作,或者通过在该迭代器返回的映射项上执行 setValue 操作除外),则迭代结果是不确定的。该 set 支持元素的移除,通过 Iterator.remove、Set.remove、removeAll、retainAll 和 clear 操作可从该映射中移除相应的映射关系。它不支持 add 或 addAll 操作。
这是 API 的解释
我觉得已经说的很清楚了,我来给你解释下
他说明的是 返回的 set (Map.entry<k,v>) 和原来haspMap(k,v) 之间的关系
因为在对set进行迭代的时候在底层 都是调用 iterator 迭代器来遍历 集合中的元素的,而且,该set 返回的 iterator 会锁定该集合,多以该API文档的解释是,通过迭代器自己的 remove 操作,或者通过在该迭代器返回的映射项上执行 setValue 操作除外),则迭代结果是不确定的。
说明在迭代器上返回的 对象上,用 set 的方法去修改 会出现意外,一般情况下 是 通过iterator 遍历的元素,就必须通过 itetator 的方法来修改!
这个方法的解释说的就是 在 iterator 上操纵元素,和在该SET 上操纵元素之间的联系和区别


作者: 潘东升    时间: 2012-6-18 08:29
hm.entrySet()这个的作用也就是entrySet方法的作用,该方法是把Map集合转化为Set集合的一种方法,然后通过Set集合的迭代功能把集合中的元素取出,因为无法直接取出Map集合中的所有键和值
作者: 李元峰    时间: 2012-6-18 08:32
潘东升 发表于 2012-6-18 08:29
hm.entrySet()这个的作用也就是entrySet方法的作用,该方法是把Map集合转化为Set集合的一种方法,然后通过S ...

楼上的说的对,应该是 MAP 我写错了
作者: sbeeqnui1987    时间: 2012-6-18 09:11
Java的泛型集合类:

HashMap<String,Integer> hm = new HashMap<String,Integer>();

  hm.put("zxx",19);

  hm.put("lis",18);


  Set<Map.Entry<String,Integer>> mes= hm.entrySet();

  for(Map.Entry<String,Integer> me : mes) {

   System.out.println(me.getKey() + ":" + me.getValue());

  }

l  对在jsp页面中也经常要对Set或Map集合进行迭代:

<c:forEach items=“${map}” var=“entry”>

       ${entry.key}:${entry.value}

</c:forEach>

代码:


Java代码  
1.HashMap<String, Integer> maps=new HashMap<String, Integer>();   
2.      maps.put("a", 1);   
3.      maps.put("b", 1);   
4.      maps.put("c", 1);   
5.        
6.      Set<Map.Entry<String, Integer>> entrySet=maps.entrySet();   
7.      for (Map.Entry<String, Integer> entry : entrySet) {   
8.         System.out.println(entry.getKey()+":"+entry.getValue());   
9.      }  

作者: 常佳杰    时间: 2012-6-18 09:13
潘东升 发表于 2012-6-18 08:29
hm.entrySet()这个的作用也就是entrySet方法的作用,该方法是把Map集合转化为Set集合的一种方法,然后通过S ...


有点懂了,之前也是这么理解,确定一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2