關於ArrayList的一個匪夷所思的問題!!!!
今天遇到了個問題,希望高人給解釋一下。
/**
* @(#)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。
------解决方案--------------------晕,add了两次,当然两个了
------解决方案--------------------两个都refer to同一个Book instance.
------解决方案--------------------List 里面都有两个数据了,当然显示两条,哎!!