sha*_*ath 1 java collections list arraylist
有人可以向我解释下面这段代码有什么问题吗?
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("1");
l.add("2");
l.add("3");
l.add("4");
for (int i = 0; i < l.size(); i++) {
if(l.get(i).equals("1"))
l.remove(l.get(i));
else
System.out.println(l.get(i));
}
}
Run Code Online (Sandbox Code Playgroud)
给我输出[3.4]而不是[2,3,4] ..我的[2]是什么?我对列表的这种行为感到困惑..如果有人可以解释的话,那很好..
提前致谢 :)
原因是:
当i = 0时你删除了第一个元素并且我变为1
当i = 1时你现在处于第三个元素,因为你已经将所有内容都向下移动了所以你写了"3"
当i = 2时你写了第三个元素是"4"
给你输出"3","4"
另一种实现可能是:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Item {
public static void main(String[] args) {
List<String> l = new ArrayList<String>();
l.add("1");
l.add("2");
l.add("3");
l.add("4");
Iterator<String> iter = l.iterator();
while(iter.hasNext())
{
String value = iter.next();
if("1".equals(value))
{
iter.remove();
}
else
{
System.out.println(value);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)