Java中ArrayList的add()方法奇怪的问题
其实我也不敢肯定就是add()方法的问题,只是通过简单的调试感觉就应该是。
因为是jsp中的问题,没法贴出源代码让大家调试,大致描述一下症状:
通过循环每次往ArrrayList对象中添加一个对象,在每次循环时把对象打印显示它的内容,是一个一个的各自的数值
可是循环结束后,对ArrrayList对象再循环显示(get(int index)方法)的时候是全部都变成一个数值了,而且就是最后一个
我试着在每往ArrrayList对象里面添加一个对象后就循环显示,结果发现是:每添加一个对象,ArrrayList对象里所有的对象都变成了刚刚添加的这个,当然ArrrayList对象的size()的确是增加了一个。
很纳闷,怎么会是这样的效果?
代码大致如下:(rs是结果集, )
while (rs.next()) {
Book book = new Book();
book.initFromResultSet(rs); // 从结果集中给Book对象赋值
//System.out.println(book.getId());
books.add(book);
System.out.println("**************");
for (int i = 0; i < books.size(); i++) {
System.out.println(books.get(i).getAuthor());
System.out.println(books.get(i).getId());
//System.out.println(books.get(i).getPulisherString(books.get(i).getPublisher()));
}
}
输出结果:
**************
甘勇
1000000001
**************
郭功兵
1000000002
郭功兵
1000000002
**************
韩丽
1000000003
韩丽
1000000003
韩丽
1000000003
**************
朱付宝
1000000004
朱付宝
1000000004
朱付宝
1000000004
朱付宝
1000000004
**************
熊坤
1000000005
熊坤
1000000005
熊坤
1000000005
熊坤
1000000005
熊坤
1000000005
**************
钱慎一
1000000006
钱慎一
1000000006
钱慎一
1000000006
钱慎一
1000000006
钱慎一
1000000006
钱慎一
1000000006
**************
金保华
1000000007
金保华
1000000007
金保华
1000000007
金保华
1000000007
金保华
1000000007
金保华
1000000007
金保华
1000000007
**************
谭浩强
1000000008
谭浩强
1000000008
谭浩强
1000000008
谭浩强
1000000008
谭浩强
1000000008
谭浩强
1000000008
谭浩强
1000000008
谭浩强
1000000008