java-Java中list集合的问题

问题描述

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""infotrue);                    } 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""infotrue);                        } catch (Exception e) {                            logger.error(e.getMessage());                            }                    }            }

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

解决方案

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

 for(int i=all.size()-1;i>=0;i--){   all.remove(i); }

解决方案二:
什么问题???????

解决方案三:
一个循环时,remove第一条数据后i为1,而此时all中index为1的数据是1003的那条,所以最后数据只有两条数据啦。而用两个循环因为后循环从0开始,所以能取得三条数据。

时间: 2024-08-30 17:10:41

java-Java中list集合的问题的相关文章

深入剖析java中的集合框架_java

解析:如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象,那么可以使用Java集合框架. 如果启用集合的删除方法,那么集合中所有元素的索引会自动维护. 集合完全弥补了数组的缺陷. 02.集合框架的内容  集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法  01.接口:表示集合的抽象数据类型  02.实现:集合框架中接口的具体实现  03.算法:在一个实现了某个集合框架的接口的对象身上完成某种有用的计算方法 java集合框架简图:    01.Collection接

java中List集合及其遍历详解_java

1. 首先List<E>集合继承与Collection<E>,是一个接口.    ①  Collection (集合框架是JDK1.2版本出现的)    ②   list:是有序的,元素可以重复,以为该集合体系有索引.      经常用到的是实现该接口的ArrayList和LinkedList类    ③   Arraylist:  底层的数据结构使用的是数组结构,   特点: 查询速度很快,但是增删稍慢.线程不同步          LinkedList: 底层使用的是链表数据结

java 中list集合中对象的声明周期

问题描述 java 中list集合中对象的声明周期 list集合中存放是是堆中的对象,但如果堆中的对象被回收后就变成了空?还是只要list集合存在就不会被回收?如果会被回收的话,怎样保证集合内的数据在list存在时长期有效??求大牛帮助

浅谈java中对集合对象list的几种循环访问_java

java中对集合对象list的几种循环访问的总结如下  1 经典的for循环  public static void main(String[] args) { List<String> list = new ArrayList(); list.add("123"); list.add("java"); list.add("j2ee"); System.out.println("=========经典的for循环======

程序猿的日常——Java中的集合列表

列表对于日常开发来说实在是太常见了,以至于很多开发者习惯性的用到数组,就来一个ArrayList,根本不做过多的思考.其实列表里面还是有很多玩法的,有时候玩不好,搞出来bug还得定位半天.所以这里就再啰嗦一下,整理下相关的内容. 基础知识 一般计算机相关的专业都应该学过数据结构,而很多的集合都是应用了经典的数据结构设计的.比如数组.栈.队列.链表.树等等,里面也会用到很多常见的查找或者排序算法,所以就先简单的回顾下. 数组 数组在c语言里面用的很广泛,刚开始学习的时候,整天的空指针和数组越界.后

第三讲 Java语言中的面向对象特性

对象 [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知道java语言在面向对象编程方面有何独特的特点吗? 难点: 1. 理解方法重载和方法重写,不要混淆了两者的使用. 2. 类变量和类方法的使用. 3. 接口的使用.3.1 面向对象技术基础 3.1.1 面向对象的基本概念 面向对象的基本思想 面向对象是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradigm),其基本思想是使用对象.类

简析Java开发中的XML编程

xml|编程 XML作为全球通用的结构化语言,越来越受人们青睐,各种开发平台(比如Microsoft Studio系列.Oracle系列.Inprise Borland系列等)也都把支持XML开发作为宣传口号之一 .由于笔者所从事的电子政务开发较早的引入了XML,所以尝到了许多甜头,在许多项目中利用XML数据交换信息,省去了许多麻烦事,不用制定繁锁的数据格式,利用XML数据易于表达,也利于一线开发者跟踪调试. 在XML应用中,最常用也最实用的莫过于XML文件的读写,所以笔者通过一个简单的XML文

Java编程中更新XML文档的常用方法

xml|编程 本文简要的讨论了Java语言编程中更新XML文档的四种常用方法,并且分析这四种方法的优劣.其次,本文还对如何控制Java程序输出的XML文档的格式做了展开论述. JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口.JAXP支持DOM.SAX.XSLT等标准.为了增强JAXP使用上的灵活性,开发者特别为JAXP设计了一个Pluggability Layer,在Pluggability Laye

Java语言入门教程(十一):Java语言中的数组

在教程(十)中,我们学习了Java类之间常见的两种关系,即关联和依赖. 如果A关联或依赖B,如果仅从A到B这个方向看,从数量上,可能有1对1和1对多 两种可能.面向对象的应用,都是映射现实世界的对象以及对象之间的关系的, 仔细考察一下我们身边的情况,对象与对象之间如果存在关联或依赖,其实1对 多的关系更为常见.如,一个部门有多个员工,一个学员有多个院系,一个人有 多张毕业证书- 上篇文章中的例子,学生只能选择一门免费课程学习,如果培训中心加大优 惠力度,每个学生最多可以选择3门课程学习,应该如何

Tiger中的注释,第1部分: 向Java代码中添加元数据

编程的一个最新的趋势,尤其是在 Java 编程方面,是使用 元数据.简单地说,元数据就是 关于数据的数据.元数据可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查.许多元数据工具,如 XDoclet(请参阅 参考资料),将这些功能添加到核心 Java 语言中,暂时成为 Java 编程功能的一部分. 直到可以使用 J2SE 5.0(也叫做 Tiger,现在是第二个 beta 版本),核心 Java 语言才最接近具有 Javadoc 方法的元数据工具.您使用特殊的标签集合来标记代码,并执行