import java.util.List;
import java.util.ArrayList;
import java.util.ListIterator;
public class Text{
  public static void main(String[] args){
    List<Book> list = new ArrayList<Book>();
    list.add(new Book("1","张三"));
    list.add(new Book("2","李四"));
    list.add(new Book("3","王五"));    ListIterator li = list.listIterator();
    while(li.hasNext()){
      Book student = (Book)li.next();
      if( student.equals(new Book("3","王五"))){
          li.add(new Book("4","麻六"));
      }
      System.out.println(student.getId() + student.getName());
    }
  }
}

解决方案 »

  1.   

    楼主要学会贴代码public class Demo {
        public static void main(String[] args) {
            if (args.length == 0) {
                System.out.println("no args.");
            }
        }
    }像楼主的代码层级多,又没有排版,没法看。
      

  2.   

    为什么要用迭代器加?直接用list.add就可以了
      

  3.   

    不明白你为什么要在同一个list里面拿出一个元素来再放回同一个List里面
      

  4.   

    可以看出,楼主基础并不扎实
    1:频繁的使用new ,对于List来说,是通过equals方法来判断一个对象和另一个对象是否相同。而在list的底层,equals()判断条件是根据两个对象的内存地址来判断的。楼主虽然传的构造方法中参数是一样的,但是实际内存开辟空间的地址并不一样。
    2:在对集合遍历的过程中,是不允许对集合整体进行添加或者删除操作,否则会触发并发修改异常,看群主要求是添加,那么正确的做法,是调用迭代器本身的remove方法删除他,并且重构数据,用另一个集合去暂存数据,遍历完成之后然后把暂存数据的那个集合添加到最初定义的那个集合里面。
      

  5.   

    给出源码,希望楼主好好研究下
    import java.util.*;
    public class Test{
      public static void main(String[] args){
        List<Book> list = new ArrayList<Book>();
        Book b1 = new Book("1","张三");
        Book b2 = new Book("2","李四");
        Book b3 = new Book("3","王五");
    Collections.addAll(list,b1,b2,b3); List<Book> list1 = new ArrayList<Book>();
        for(Iterator<Book> car = list.iterator();car.hasNext();){
    Book b = car.next();
    if(b.equals(new Book("3","王五"))){
    car.remove();
    list1.add(new Book("4","小明"));
    }
    }
    list.addAll(list1);
    for(Book bs:list){
    System.out.println(bs.id+" "+bs.name);
    }
      }
    }
    class Book{
    String id;
    String name;
    public Book(String id,String name){
    this.id = id;
    this.name = name;
    }
    @Override
    public boolean equals(Object obj){
    if(obj == this) return true;
    if(!(obj instanceof Book)) return false;
    if(obj == null) return false;
    Book book = (Book)obj;
    return this.id.equals(book.id) &&
    this.name.equals(book.name);
    }
    }