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 得到的是考试的数组,然后再得到考试数组里面的数据,

参考技术A 很简单啊。。可以将gslist设定为初始值为null的全局变量。然后再在用到它时给他赋值。本回答被提问者采纳 参考技术B 没详细看,但是你在循环里面不断的new东西当然就把前面插入的数据都清空了再重新new了!!追问

意思就是说,有很多班级,然后要根据班级的id去得到考试的数据,tindex[i].getID()这个是班级的id gs 得到的是考试的数组,然后再得到考试数组里面的数据,

参考技术C 你的问题表述不清楚,没明白你要做什么追问

意思就是说,有很多班级,然后要根据班级的id去得到考试的数据,tindex[i].getID()这个是班级的id gs 得到的是考试的数组,然后再得到考试数组里面的数据,

追答

你的mapgs不是已经得到结果了吗。。最终目的是啥额。。

参考技术D 把gslist的定义放到第一层循环的外面追问

如果定义到外面不是又会有多于的数据吗

以上是关于java map 用for循环的问题的主要内容,如果未能解决你的问题,请参考以下文章

Java中Set集合怎样用for遍历?

前端面试题,map,forEach,for循环,三个都能遍历,什么区别?

C++ 中map中是数怎么经过for循环提取出来,

java增强for循环的语法结构

Java的for循环、增强for循环、lambda表达式中的forEach 三种方式优缺点比较?

Array数组循环全解1