java map 用for循环的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java map 用for循环的问题相关的知识,希望对你有一定的参考价值。
代码如图,之前应该都没有问题,但是用上if的删除语句就有问题了,求大佬看看
亲,你要搞清楚。集合类的foreach只能用来遍历,不能进行修改操作的。即不能修改、删除、添加元素。只能遍历。如果进行了修改操作的话。会抛出java.util.ConcurrentModificationException异常
,表示你不同在遍历的同时,又进行修改。
如果你非得,要做修改操作。请选择正常的for循环。以List为例。
List<String> list = new ArrayList();
for(int i=0;i<10;i++)
list.add(i+"");
System.out.println(list.size());//10
for(int i=0;i<list.size();i++)
if(list.get(i).equals("1"))
list.remove(list.get(i));
System.out.println(list.size());//9 参考技术A 这个是迭代器的问题,不能使用FOR( TYPE T : SET) 来修改集合
java双循环list数据保存问题
代码如下,tindex里面和gs里面都是一个数组,现在的问题就是,第二次循环的时候,gslist里面的数据也会被刷新,不知道如何与list里面的数据绑定到一起。
TIndex[] tindex = teacherIS.getClassIndexsOfCurAcademicYearByTeacherId((int)session.getUserID());
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < tindex.length; i++)
Map<String, Object> map = new HashMap<String, Object>();//得到班级数据
map.put("className", tindex[i].getName());
map.put("classId", tindex[i].getID());
TClassExam[] gs = em.getClassExamsByClassId((int) tindex[i].getID());
System.out.println(gs.length);
List<Map<String, Object>> gslist = new ArrayList<Map<String, Object>>();
for (int j = 0; j < gs.length; j++)
Map<String, Object> mapgs = new HashMap<String, Object>();
mapgs.put("gsid",gs[j].getId());
mapgs.put("gsname", gs[j].getName());
setAttr("gslist", gslist);
list.add(map);
setAttr("myClassList", list);
意思就是说,有很多班级,然后要根据班级的id去得到考试的数据,tindex[i].getID()这个是班级的id gs 得到的是考试的数组,然后再得到考试数组里面的数据,
意思就是说,有很多班级,然后要根据班级的id去得到考试的数据,tindex[i].getID()这个是班级的id gs 得到的是考试的数组,然后再得到考试数组里面的数据,
参考技术C 你的问题表述不清楚,没明白你要做什么追问意思就是说,有很多班级,然后要根据班级的id去得到考试的数据,tindex[i].getID()这个是班级的id gs 得到的是考试的数组,然后再得到考试数组里面的数据,
追答你的mapgs不是已经得到结果了吗。。最终目的是啥额。。
参考技术D 把gslist的定义放到第一层循环的外面追问如果定义到外面不是又会有多于的数据吗
以上是关于java map 用for循环的问题的主要内容,如果未能解决你的问题,请参考以下文章
前端面试题,map,forEach,for循环,三个都能遍历,什么区别?