Iterator和Collection相互依存
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection books=new HashSet();
books.add("你好1");
books.add("你好2");
books.add("你好3");
System.out.println(books); //输出 [你好1, 你好2, 你好3]
Iterator it=books.iterator();
while(it.hasNext()){
String tmp=(String)it.next();
if("你好1".equals(tmp)){
it.remove();
}
tmp="change";
}
System.out.println(books); //输出 [你好2, 你好3]
//可以在使用Iterator对集合进行迭代时,并不是把集合元素的引用给迭代的变量,而是深度拷贝,把值给了他
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection books=new HashSet();
books.add("你好1");
books.add("你好2");
books.add("你好3");
System.out.println(books); //输出 [你好1, 你好2, 你好3]
Iterator it=books.iterator();
while(it.hasNext()){
String tmp=(String)it.next();
if("你好1".equals(tmp)){
/**
* 这样会发生 java.util.ConcurrentModificationException异常
* 因为Iterator在迭代的时候,Collection不能更改集合里的元素的,只可以通过Iterator的remove方法
* Iterator采用fast-fail机制,在访问的时候一旦检测到集合被修改,一般来说是其他的线程,就会抛出异常
*/
books.remove(tmp);
}
}
System.out.println(books);
}