问题描述
我有一个表bidbNamepid1书本02电脑03语文书14数学书15台式电脑26笔记本2我想实现它的主版块与子版块的嵌套循环输出即:主板块:书本子版块:语文书,数学书==========================主版块电脑子版块:台式电脑笔记本publicMapfindBoard(){Mapmap=newHashMap();Listlist=newArrayList();Stringsql="select*fromboardorderbyparentId";try{conn=this.getConn();pstmt=conn.prepareStatement(sql);rs=pstmt.executeQuery();intparID=0;while(rs.next()){if(parID!=rs.getInt("parentId")){map.put(parID+"",list);//实现存子版块的maplist=newArrayList();//通过实例化,又初始值,再存入parID=rs.getInt("parentId");//从新赋值给parID}Boardboard=newBoard();board.setBoardId(rs.getInt("boardId"));board.setBoardName(rs.getString("boardName"));board.setParentId(rs.getInt("parentId"));list.add(board);}map.put(parID+"",list);}catch(Exceptione){//TODO:handleexceptionSystem.out.println("findBoard的Map方法出异常");e.printStackTrace();}finally{this.closeAll(conn,pstmt,rs);}returnmap;}下面是测试类BoardDaoboardDao=newBoardDaoImpl();MapmapBoard=boardDao.findBoard();ListlistBoard=(List)mapBoard.get(0);for(inti=0;i<listBoard.size();i++){Boardboard=(Board)listBoard.get(i);System.out.println("主版块"+board.getBoardName());ListlistSunBoard=(List)mapBoard.get(board.getBoardId()+"");if(listSunBoard!=null){for(intj=0;j<listSunBoard.size();j++){BoardsunBoard=(Board)listSunBoard.get(j);if(sunBoard.getParentId()==board.getBoardId()){System.out.println("子版块"+sunBoard.getBoardName());System.out.println("===============");}}}else{System.out.println("暂无子版块");System.out.println("===============");}}他输出来的出现错误我把if(parID!=rs.getInt("parentId")){map.put(parID+"",list);//实现存子版块的maplist=newArrayList();//通过实例化,又初始值,再存入parID=rs.getInt("parentId");//从新赋值给parID}这行代码去掉,他运行就是正确的,但是输出来的效果,是全部都认为是主版块,而不是我想要的效果请求各位大哥帮帮忙!好吗?或有还有其他别的方法能够输出来放入MAP中~~~~~~~~~~~~~~~~~~~~~·谢谢,十分感谢!!!!!
解决方案
解决方案二:
建议把这个表拆成2个表tb_bookTypeidname1书本2电脑tb_booksidnametypeid1语文书12数学书13台式电脑24笔记本2要查类型是“书本”的书只要查表tb_books中对应typeid为1的就可以。如果数据表不可修改了,我觉得首先这个数据库表设计是有问题的。如果数据库表不可修改,非要这样做。我横看竖看怎么也找不到关联。。。没有关系不好做。敬请高人。
解决方案三:
该回复于2010-11-03 16:15:09被版主删除
解决方案四:
恩,谢谢各位。我已经找出问题的所在了!parID!=rs.getInt("parentId"))必须先定义inttt=rs.getInt("parentId"));parId!=tt;这样才行!!OHMYGOD~~~~~~~~~~~~呵呵·搞了很久!!!
解决方案五:
这个,必须恭喜
解决方案六:
该回复于2010-12-02 16:07:43被版主删除
解决方案七:
该回复于2010-12-07 13:40:57被版主删除
解决方案八:
该回复于2010-12-02 15:48:22被版主删除