今天遇到了個問題,希望高人給解釋一下。
/**
 * @(#)ListAddTest.java
 *
 *
 * @author Administrator
 * @version 1.00 2007/5/8
 */
import java.util.ArrayList;class Book{ private String id = "";
private String name = ""; public void setid(String id){
this.id = id;
}
public String getid(){
return this.id;
}
public void setname(String name){
this.name = name;
}
public String getname(){
return this.name;
}
}public class ListAddTest {    public ListAddTest() {
    }    public static void main(String[] args) {        ListAddTest listAddTest = new ListAddTest();
        ArrayList<Book> list = new ArrayList<Book>();        Book book = new Book();
        book.setid("001");
        book.setname("abc");
        list.add(book);        book.setid("002");
        book.setname("def");
        list.add(book);        for(int i=0; i<list.size(); i++){         System.out.println("******  id  ******:" + list.get(i).getid());
         System.out.println("****** name ******:" + list.get(i).getname());
         System.out.println("");
        }
    }
}結果:
******  id  ******:002
****** name ******:def******  id  ******:002
****** name ******:def問題:
我知道上面的代碼有問題,還需要一個new Book();
可是我只作了一次Book book = new Book();
為什麼list裡有兩條數據。我期望上面程序運行出來的結果是:
******  id  ******:002
****** name ******:def
只县示一條數據,即第二个book。

解决方案 »

  1.   

    两个都refer to同一个Book instance.
      

  2.   

    如果要unique的话,用一个Set吧。
      

  3.   

    List 里面都有两个数据了,当然显示两条,哎!!
      

  4.   

    可以用TreeSet或HashSet达到楼主的目的。
      

  5.   

    如果楼主不想要两个,那就用一个好了,System.out.println("*****id*******" + list.get(i).getId()+"\n********name****"+list.get(i).getName());