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;
}
}
分享到:
相关推荐
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....
import java.util.List; import java.util.Set; public class ConversionExample { public static void main(String[] args) { // 创建一个List List<String> list = new ArrayList(); list.add("apple"); ...
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...
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...
import java.util.List; import java.util.Set; public class RemoveDuplicates { public static void main(String[] args) { List<String> list = new ArrayList(); list.add("aa"); list.add("bb"); list....
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(); ...
import java.util.List; import java.util.Arrays; public class EnhancedForLoopExample { public static void main(String[] args) { List<String> names = Arrays.asList("Ada Lovelace", "Alan Turing", ...
使用ArrayList需要import java.util.ArrayList;并初始化ArrayList对象,例如:ArrayList<E> objectName = new ArrayList();其中E是泛型数据类型,objectName是对象名。 ArrayList提供了很多有用的方法,添加元素到...
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 =...
import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; public class CollectionDemo { public static void main(String[] args) { Collection<String> collection = new ...
4. **示例代码:MyIterator.java** 我们可以创建一个简单的程序,演示如何使用`Iterator`遍历ArrayList: ```java import java.util.ArrayList; import java.util.Iterator; public class MyIterator { ...
下面是:chessInteface.java ******************************************************************************************/ import java.awt.*; import java.awt.event.*; import java.io.*; import java...
import java.util.List; public class ListExample { public static void main(String[] args) { List<String> names = new ArrayList(); names.add("Alice"); names.add("Bob"); names.add("Charlie"); ...
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 ...
import java.util.*; public class RandomArray { public static int[] generateUniqueRandom(int length, int min, int max) { if (length > (max - min + 1)) { throw new IllegalArgumentException("Length ...
import java.util.List; import java.util.ListIterator; public class ListIteratorExample { public static void main(String[] args) { List<String> list = new ArrayList(); list.add("A"); list.add("B")...
在Java编程中,题目所描述的问题涉及到多线程并发控制以及集合操作,这些是Java程序员必须掌握的关键技能。首先,我们需要创建一个奖项列表,然后使用线程来模拟两个部门的抽奖过程,确保线程安全和奖品不重复。 1....
- `Fork/Join`框架:用于并行执行任务,提高大规模计算的效率,通过`java.util.concurrent.ForkJoinPool`和`java.util.concurrent.RecursiveTask`等类实现。 2. **类型推断**: - `钻石操作符<>`:在创建泛型实例...