Java使用迭代器删除元素
示例
该方法是一个可选方法,它删除上一次调用所返回的元素。例如,以下代码填充一个字符串列表,然后删除所有空字符串。Iterator.remove()Iterator.next()
List<String> names = new ArrayList<>();
names.add("name 1");
names.add("name 2");
names.add("");
names.add("name 3");
names.add("");
System.out.println("旧尺寸: " + names.size());
Iterator<String> it = names.iterator();
while (it.hasNext()) {
String el = it.next();
if (el.equals("")) {
it.remove();
}
}
System.out.println("新尺寸: " + names.size());输出:
旧尺寸: 5 新尺寸: 3
请注意,上面的代码是在迭代典型集合时删除元素的安全方法。如果相反,您尝试从这样的集合中删除元素:
for (String el: names) {
if (el.equals("")) {
names.remove(el); //错误!
}
}ArrayList向迭代器提供快速失败迭代器语义的典型集合(如)将抛出一个ConcurrentModificationException。
该remove()方法只能在调用之后调用(一次)next()。如果在调用之前调用了next()它,或者在调用之后调用了两次next(),则该remove()调用将抛出IllegalStateException。
该remove操作被描述为可选操作;即不是所有的迭代器都允许它。不支持它的示例包括不可变集合的迭代器,集合的只读视图或固定大小的集合。如果remove()在迭代器不支持移除时调用,则会抛出一个UnsupportedOperationException。
热门推荐
10 对患者生日祝福语简短
11 结婚祝福语简短装备
12 周岁祝福语学生文案简短
13 订婚领证祝福语简短精辟
14 导师获奖祝福语大全简短
15 新婚购房祝福语简短精辟
16 牛年祝福语简短的爱人
17 送芒果的祝福语简短
18 送给学长毕业祝福语简短