liuzhen6835 2015-07-05 09:15 采纳率: 51.2%
浏览 1547
已采纳

Java中list集合的问题

for(int i=0;i<all.size();i++)
{

                    if(all.get(i).getSno().equals(sno))
                        {
                            System.out.println("正在删除的是:"+all.get(i).getSno());
                            all.remove(i);
                            flag=true;
                        }
                }
            for (int i = 0; i < all.size(); i++)
                {
                    System.out.println("正在保存的是:"+all.get(i).getSno());
                    String sno2= all.get(i).getSno();
                    String sname=all.get(i).getSname();
                    String sex=all.get(i).getSex();
                    int age=all.get(i).getAge();
                    String info=sno2+"#"+sname+"$"+sex+"^"+age+";";

                    //调用写入数据的方法
                    try {
                        studentDao.saveFile("db\\student.txt",info,true);
                    } catch (Exception e) {
                        logger.error(e.getMessage());
                    }
                }
 ////////////////////////////////////////////////////////////////////
 for(int i=0;i<all.size();i++)
                    {

                        if(all.get(i).getSno().equals(sno))
                            {
                                System.out.println("正在删除的是:"+all.get(i).getSno());
                                all.remove(i);
                                flag=true;
                            }
                            else
                            {
                                System.out.println("正在保存的是:"+all.get(i).getSno());
                                String sno2= all.get(i).getSno();
                                String sname=all.get(i).getSname();
                                String sex=all.get(i).getSex();
                                int age=all.get(i).getAge();
                                String info=sno2+"#"+sname+"$"+sex+"^"+age+";";

                        //调用写入数据的方法
                        try {
                            studentDao.saveFile("db\\student.txt",info,true);
                        } catch (Exception e) {
                            logger.error(e.getMessage());
                            }
                    }

            }

db\student.txt中原本有
1001#Lucy1$男^33;
1002#Lucy2$男^33;
1003#Lucy3$男^33;
1004#Lucy4$男^33;
数据,然后通过编号1001来删除这条数据,然后把剩下的数据重新写到student.txt中,可是第一种方法中用if——else中如果删除1001这条记录,最后剩下的数据中有1003和1004这两条数据,用两个for循环正常这是为什么?

  • 写回答

3条回答

  • danielinbiti 2015-07-05 09:53
    关注

    for循环里面你对List进行了remove,这种有remove的需要从大往小,如果从小到大,remove后会报错。

     for(int i=all.size()-1;i>=0;i--){
       all.remove(i);
     }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?