【发布时间】:2017-12-28 22:23:58
【问题描述】:
如何在使用for loop 进行迭代时从列表中删除当前元素?
我在下面的列表中包含:
List<String> list = new ArrayList<String>();
list.add("a");
list.add("a2");
list.add("a3");
list.add("a4");
list.add("a5");
list.add("a6");
list.add("a7");
list.add("a8");
list.add("a9");
list.add("a10");
list.add("a11");
list.add("a12");
list.add("a13");
list.add("a14");
list.add("a15");
List<List<String>> parts = chopped(list, 4);
System.out.println(parts);
这给了我这样的输出:
[[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
现在我正在尝试从以下程序的列表中删除第一个列表:
for(int i=0; i<parts.size(); i++){
System.out.println("Loop number: "+i);
System.out.println("Current list: "+parts);
Thread.sleep(2000);
parts.remove(i);
System.out.println("After removing: "+parts);
}
这里我使用parts.remove(i); 删除当前元素,它给了我以下输出:
[[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
Loop number: 0
Current list: [[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
After removing: [[a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
Loop number: 1
Current list: [[a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
After removing: [[a5, a6, a7, a8], [a13, a14, a15]]
这个删除了第一个当前元素[a, a2, a3, a4],这是正确的,但在运行第二个循环时它删除了[a9, a10, a11, a12]。
我想像下面这样循环删除它:
[[a, a2, a3, a4], [a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
[[a5, a6, a7, a8], [a9, a10, a11, a12], [a13, a14, a15]]
[[a9, a10, a11, a12], [a13, a14, a15]]
[[a13, a14, a15]]
[]
已编辑:
当我尝试使用 parts.get(loopNumber) 或 parts.get(i)` 访问 List 内的 List 时,它会引发异常错误:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 1
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at gmailSendLaptopGUI.MyProgram.main(MyProgram.java:156)
【问题讨论】:
标签: java arrays list loops data-structures