日期:2014-05-20  浏览次数:20711 次

问个简单的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());
}