A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,求解

9 个回复

倒序浏览
map的元素使用的是迭代器,在迭代时,不可以通过集合对象的方法操作集合中的元素的。
这个是没有办法的,如果你想要操作Map元素的话,
只有将map的key值或者Map.Entry取出来放入到list中,重新遍历list,然后使用map的方法操作元素。
回复 使用道具 举报 1 0
  1. public class MapTest {

  2.         public static void main(String[] args) {
  3.                 // TODO Auto-generated method stub

  4.                
  5.                 Map<String, Integer> mp = new TreeMap<String, Integer>();
  6.                 mp.put("张三",25);
  7.                 mp.put("李四", 38);
  8.                 mp.put("王五", 46);
  9.                 mp.put("赵六", 78);
  10.                
  11.                 Set<Map.Entry<String, Integer>> s = mp.entrySet();
  12.                 for(Iterator<Entry<String, Integer>> it = s.iterator(); it.hasNext();){
  13.                         Map.Entry<String, Integer> me = it.next();
  14.                         //操作元素
  15.                         if(me.getKey().equals("张三"))
  16.                                 it.remove();
  17.                         if(me.getValue().equals("78"))
  18.                                 it.remove();
  19.                        
  20.                 }
  21.                 System.out.println(mp);
  22.                
  23.         }

  24. }
复制代码
回复 使用道具 举报
不行吧,改的话会报错
回复 使用道具 举报

这样只能remove(),还是不能put()啊
回复 使用道具 举报
nuddlesW 发表于 2014-12-15 13:34
这样只能remove(),还是不能put()啊

遍历的时候只能删除,增加不了,什么题非要在map集合遍历的时候加入元素?
回复 使用道具 举报
a371166028 来自手机 中级黑马 2014-12-15 18:05:49
7#
同步修改异常,  可以使用,迭代器来避免,
回复 使用道具 举报
a371166028 来自手机 中级黑马 2014-12-15 18:07:06
8#
keyset.iterator...如果不行就专程list..用listiterator这个是肯定行的
回复 使用道具 举报
钟伟 发表于 2014-12-15 14:29
遍历的时候只能删除,增加不了,什么题非要在map集合遍历的时候加入元素? ...

阳哥技术测试28期
回复 使用道具 举报
开天开始学习这个 嘿嘿
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马