问个简单的java问题关于iterator
我再写一个从数据库中读取数据在放到集合中,可从集合遍历出来后最后一条输出10(数据库中有10条记录)遍,这是为什么。
代码如下:
Collection col=null;
TreeImpl ti=new TreeImpl();//这是个读数据类
col= ti.getAllTree(); //读出所有数据方法
Iterator it=col.iterator();
while(it.hasNext()) {
TreeBean tr=(TreeBean) it.next();//数据表的bean
System.out.print(tr.getId());
System.out.print( '\t ');
System.out.print(tr.getContext());
System.out.print( '\t ');
System.out.println(tr.getFid());
}
------解决方案--------------------问题在tree上,每次add中,你必须用tree=new ctree();
while(rs.next()){
/*不知道tree 的类型,用ctree代替*/
ctree tree=new ctree();
tree.setId(rs.getInt( "ID "));
tree.setContext(rs.getString( "context "));
tree.setFid(rs.getInt( "fatherID "));
col.add(tree);
}
注意,new创建的对象与c中的指针含义一致,所以你的做法无非是每次对add传了一个东西
你也可以对tree对象实现clone()方法,将其对象复制
while(rs.next()){
tree.setId(rs.getInt( "ID "));
tree.setContext(rs.getString( "context "));
tree.setFid(rs.getInt( "fatherID "));
col.add(tree.clone());
}