今天的一段代码:
    List lista = new ArrayList();
    /*
    赋值给lista
   */
   List listb = (ArrayList)((ArrayList)lista.clone());
   /*
   用iterator取出内容进行修改
   */
  问题出现了:现在再用lista时,发现它的内容被修改过了。这是为什么呢?我    已clone()了呀。原来Java中List(包括Map等)的clone()执行的是shadow clone,也就是它只是拷贝了引用,如果将clone()后的内容进行了修改,它就会不知不觉中将原来的内容也进行了更改(其实就是一个)。
解决方法:自己进行deep clone()
List listb = new ArrayList();
for(Iterator ie = lista.iterator();ie.hasNext();)
{
    Object a = (Object)ie.next();
    Object b = new Object(a.get.., ..., ...);
    listb.add(b);
}
注意:用List的addAll之类方法也是shadow clone