- 在Java中,变量一般是变量的引用,获取到的是它的值。
- 实现Iterator接口,遍历Collection实现类的内容时候,不可用Iterator自身以外的类来改变Collection实现类的内容,相当于Iterator实现类已经接管了Collection实现类。
“
这里写代码片
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class Itea {
public static void main(String[] args) {
Collection<String> coll=new HashSet<String>();
coll.add("111");
coll.add("222");
coll.add("333");
coll.add("444");
coll.add("555");
Iterator<String> iter=coll.iterator();
Iterator<String> iter_01=coll.iterator();
while(iter.hasNext())
{
String str=iter.next();
if(str.equals("222"))
{
iter.remove();
//coll.remove(str);代码错误
}
else
{
str="666";
}
}
System.out.println(coll);
}
}
“`
- 如:Iterator iter=coll.iterator();
若coll之后发生变化,iter不再可以遍历coll,coll发生变化的前后两次的hashcode值是不一样的。 - Iterator接口采用快速失败机制,一旦在遍历集合过程中发现集合被修改(通常是程序其他进程修改),程序立即发生异常,而不是显示修改后的结果,避免共享资源引发的潜在问题。