import java.util.ArrayList;
import java.util.ListIterator;
public class Demo1_ArrayList {
public static void main(String[] args) {
/*
* 有一个集合,
* 假设里面有“bbb” “ccc” “abc” “abc” “abc” “abc” “ooo”7个元素
* 要求,使用普通for循环去除其中的所有“abc” 尝试完成
*/
ArrayList<String> list = new ArrayList<String>();
list.add("abc");
list.add("abc");
list.add("bbb");
list.add("ccc");
list.add("abc");
list.add("abc");
list.add("abc");
list.add("abc");
list.add("ooo");
list.add("abc");
list.add("abc");
// 列表迭代器
// ListIterator<String> it = list.listIterator();
// while (it.hasNext()) {
// String s = it.next();
// if ("abc".equals(s)) {
// it.remove(); // 注意:用列表迭代器的删除功能
// }
// }
/*
* 正常遍历集合,判断遍历到的元素
* 这时一旦删除元素,集合长度会减1,循环索引加1后会有元素遗漏,遍历不到。
* 解决方案:删除一个元素,循环索引就减1.
*/
// for (int i = 0; i < list.size(); i++) {
// String s = (String) list.get(i);
// if ("abc".equals(s)) {
// list.remove(i);
// i--;
// }
// }
/*
* 方式2:将集合倒着遍历,判断元素并删除。
*/
for (int i = list.size() - 1; i >= 0; i--) {
String s = (String) list.get(i);
if ("abc".equals(s)) {
list.remove(i);
}
}
System.out.println("list:" + list);
System.out.println(list.size());
}
}
|
|