4
回答
java.util.List 应该这样来遍历
开发十年,就只剩下这套Java开发体系了   

网上看到一个帖子:

假设使用remove方法移除aList中等于"3"的元素,当移除一个元素时,list中的后一个元素就会自动填补空缺,而此时,如果不控制index而继续就会漏掉一个哦。

List<String> aList = new ArrayList<String>();
    aList.add("1");
    aList.add("2");
    aList.add("3");
    aList.add("3");
    aList.add("5");
    aList.add("6");
for (int i = 0; i < aList.size(); i++) {
    System.out.println("1aList[" + i + "] = " + aList.get(i));
    if ("3".equals(aList.get(i))) {
      System.out.println("移除aList["+i+"] = "+aList.get(i));
      aList.remove(i);
      //注意:如果移除元素后,要对填补上来的元素也要检查  i = i - 1;
    }
}
for (int i = 0; i < aList.size(); i++) {
   System.out.println("2aList[" + i + "] = " + aList.get(i));
}

其实无须这么复杂,用 iterator() 就可以了

Iterator elems = list.iterator();
while(elems.hasNext()){
    if(3==elems.next())
        elems.remove();
}
举报
绿悠悠
发帖于7年前 4回/811阅
顶部