|
遍历java集合的时候,除了上帖中所说的Enumeration枚举器之外,还有迭代器Iterator接口,Iterator接口有三个方法:hasNext,next,remove,
也就是说迭代器Iterator相比Enumeration枚举器来说,基本上只是多了一个remove,Iterator的实验代码如下:
List<String> ls = new ArrayList<>(Arrays.asList("a","b","c","d"));
Iterator<String> it = ls.iterator();
while(it.hasNext()) {
String v = it.next();
if(v.equalsIgnoreCase("b"))
it.remove();
else
System.out.println("it.next=" + v);
}
for(String v:ls) {
System.out.println(v);
}
显示:
it.next=a
it.next=c
it.next=d
a
c
d
所以说,当需要查找数据时要remove,则只能用迭代器Iterator不能用枚举器Enumeration。
但是如果代码是:
List<String> ls = Arrays.asList("a","b","c","d");
Iterator<String> it = ls.iterator();
while(it.hasNext()) {
String v = it.next();
if(v.equalsIgnoreCase("b"))
it.remove(); //这句出异常
else
System.out.println("it.next=" + v);
}
for(String v:ls) {
System.out.println(v);
}
显示:
it.next=a
Exception in thread "main" java.lang.UnsupportedOperationException
这说明虽然都是 List而产生的迭代器iterator,但Arrays.asList产生的List则不能remove,只能Arraylist产生的iterator才能remove。
|
|