List 中 remove 的使用

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

 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;
  }
}

3.使用iterator.remove()方法删除

扫描二维码关注公众号,回复: 751492 查看本文章
for (Iterator it = list.iterator(); it.hasNext();) {
  String str = (String)it.next();
  if (str.equals("chengang")){
   it.remove();
  }
}

 

猜你喜欢

转载自bugyun.iteye.com/blog/2249147