`

[转]List remove 时的小问题 import java.util.*;

 
阅读更多
2008-05-09 18:00 java List remove 时的小问题 import java.util.*;
public class object {
public static void main(String[] args) {
   String str1 = new String("abcde");
   String str2 = new String("abcde");
   String str3 = new String("abcde");
   String str4 = new String("abcde");
   String str5 = new String("abcde");
   List list = new ArrayList();
   list.add(str1);
   list.add(str2);
   list.add(str3);
   list.add(str4);
   list.add(str5);
   System.out.println("list.size()=" + list.size());
   for (int i = 0; i < list.size(); i++) {
    if (((String) list.get(i)).startsWith("abcde")) {
     list.remove(i);
    }
   }
   System.out.println("after remove:list.size()=" + list.size());
}
}

运行结果不是:

list.size()=5
after remove:list.size()=0

居然是:

list.size()=5
after remove:list.size()=2

原因:List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。

解决方法:

1.倒过来遍历list

for (int i = list.size()-1; i > =0; i--) {
    if (((String) list.get(i)).startsWith("abcde")) {
     list.remove(i);
    }
}

2.每移除一个元素以后再把i移回来

for (int i = 0; i < list.size(); i++) {
    if (((String) list.get(i)).startsWith("abcde")) {
     list.remove(i);
     i=i-1;

   }
}
分享到:
评论

相关推荐

    java 同一用户不能同时登陆问题

    import java.util.List; import java.util.Map; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; import org.apache....

    list,set,map,数组间的相互转换

    import java.util.List; import java.util.Set; public class ConversionExample { public static void main(String[] args) { // 创建一个List List&lt;String&gt; list = new ArrayList(); list.add("apple"); ...

    ym_java-YOYOPlayer-src

    import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import...

    数据库工具类DatabaseUtil.java

    import java.util.*; /** * * Title: 数据库工具类 * * * Description: 将大部分的数据库操作放入这个类中, 包括数据库连接的建立, 自动释放等. * * * @author beansoft 日期: 2004年04月 * @version...

    爬虫例子源代码

    import java.util.List; import java.util.Queue; import org.htmlparser.Node; import org.htmlparser.Parser; import org.htmlparser.Tag; import org.htmlparser.util.NodeIterator; import org.htmlparser.util...

    java集合、IO、多线程、网络编程、DAO设计模式45道练习题。敢接吗!

    import java.util.List; import java.util.Set; public class RemoveDuplicates { public static void main(String[] args) { List&lt;String&gt; list = new ArrayList(); list.add("aa"); list.add("bb"); list....

    用java做的彩票自动选号系统

    import java.util.ArrayList; import java.util.Arrays; import java.util.Random; public class CaiPiaoMach { private int max; private int count; public CaiPiaoMach(int max, int count) { super(); ...

    迭代大师的修炼之道:Java中Iterator与增强for循环的深度解析

    import java.util.List; import java.util.Arrays; public class EnhancedForLoopExample { public static void main(String[] args) { List&lt;String&gt; names = Arrays.asList("Ada Lovelace", "Alan Turing", ...

    Java ArrayList教程

    使用ArrayList需要import java.util.ArrayList;并初始化ArrayList对象,例如:ArrayList&lt;E&gt; objectName = new ArrayList();其中E是泛型数据类型,objectName是对象名。 ArrayList提供了很多有用的方法,添加元素到...

    算法集训之编程大题集二(Java).pdf

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); BigInteger result = BigInteger.ONE; for (int i =...

    Java集合框架Collection接口.pdf

    import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo { public static void main(String[] args) { Collection&lt;String&gt; collection = new ...

    java Iterator迭代器的使用

    4. **示例代码:MyIterator.java** 我们可以创建一个简单的程序,演示如何使用`Iterator`遍历ArrayList: ```java import java.util.ArrayList; import java.util.Iterator; public class MyIterator { ...

    java 小游戏(5子棋的实现)

    下面是:chessInteface.java ******************************************************************************************/ import java.awt.*; import java.awt.event.*; import java.io.*; import java...

    Java集合详解解释

    import java.util.List; public class ListExample { public static void main(String[] args) { List&lt;String&gt; names = new ArrayList(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); ...

    安卓 listview 拖动 源码

    import java.util.ArrayList; import java.util.HashMap; import android.os.Bundle; import android.view.Menu; import com.czl.struct.R; import com.czl.struct.adapter.DemoAdapter; import ...

    Java随机产生数组元素并无重复元素方法

    import java.util.*; public class RandomArray { public static int[] generateUniqueRandom(int length, int min, int max) { if (length &gt; (max - min + 1)) { throw new IllegalArgumentException("Length ...

    java使用ListIterator对List遍历时添加修改删除​

    import java.util.List; import java.util.ListIterator; public class ListIteratorExample { public static void main(String[] args) { List&lt;String&gt; list = new ArrayList(); list.add("A"); list.add("B")...

    Java试题,编程题有难度

    在Java编程中,题目所描述的问题涉及到多线程并发控制以及集合操作,这些是Java程序员必须掌握的关键技能。首先,我们需要创建一个奖项列表,然后使用线程来模拟两个部门的抽奖过程,确保线程安全和奖品不重复。 1....

    JAVA API 1.7

    - `Fork/Join`框架:用于并行执行任务,提高大规模计算的效率,通过`java.util.concurrent.ForkJoinPool`和`java.util.concurrent.RecursiveTask`等类实现。 2. **类型推断**: - `钻石操作符&lt;&gt;`:在创建泛型实例...

Global site tag (gtag.js) - Google Analytics