我再写一个从数据库中读取数据在放到集合中,可从集合遍历出来后最后一条输出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());
            }

解决方案 »

  1.   

    可能是getAllTree()里面有些问题了
      

  2.   

    这段代码没有问题,我看你TreeImpl();//这是个读数据类,是不是一个树型的展示,如果是的话是不是遍历出了问题,或者是说你里面用了递归之类的方法,建议你把代码贴出来
      

  3.   

    TreeImpl类: 
     public Collection getAllTree(){
            Collection col=null;
            try {
                stm=con.createStatement();
                rs=stm.executeQuery("select * from tbTree order by fatherID");
                col=populate(rs);
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            return col;
        }
         private Collection populate(ResultSet rs) throws SQLException
    {      int i=0;
    Collection col = new ArrayList();
    while(rs.next()){
    tree.setId(rs.getInt("ID"));
    tree.setContext(rs.getString("context"));
    tree.setFid(rs.getInt("fatherID"));
    col.add(tree);
                            
            }
    return col;
                    
    }
      

  4.   

    问题在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());
    }
      

  5.   

    是populate函数中的tree.你的tree声明可能在其它地方。但是那个while里最好每次创建一个tree