Jone_Chao 2015-06-09 08:32 采纳率: 100%
浏览 2260
已采纳

List 存放 Map 的get的前面元素 被覆盖 ,求解

<%
List listMainBoard =(List) mapboard.get(new Integer(0));
Board mainBoard=new Board();

                        for(int i=0;i<listMainBoard.size();i++)
                        {
                            //循环取得主版块
                            mainBoard=((Board)listMainBoard.get(i));

                    %>
                    <tr>
                        <td colspan="4"><%=mainBoard.getBoardName() %></td>
                    </tr>
                    <%
                        //子版块
                **List listSonBoard =(List)mapboard.get(new Integer(mainBoard.getBoardId()));**
                    //out.print(mainBoard.getBoardId()); 返回主版块ID,即parentId 为 0
                    if(listSonBoard!=null){
                for(int j=0;j<listSonBoard.size();j++)
                        {
                            //循环取得子版块
                            Board sonBoard=(Board)listSonBoard.get(j);
                            //最后发表的主题
                            Topic topic =new Topic();
                            //最后发表的作者
                            User user=new User();
                            int boardId =sonBoard.getBoardId();
                            //取得该版块的主题列表
                            List listTopic=new TopicDAO().findListTopic(1, boardId);

                            if(listTopic!=null&&listTopic.size()>0)
                            {
                                //取的最后发表的帖子
                                topic=(Topic)listTopic.get(0);
                                user=new UserDAO().findById(topic.getuId());
                                out.print("用户:"+user.getuName());
                            }
                    %>
                    List listSonBoard =(List)mapboard.get(new Integer(mainBoard.getBoardId())); 这边只保存了map的最后一组元素,前面的被覆盖了,怎么回事啊,求解答,谢谢
  • 写回答

5条回答 默认 最新

  • Yurking.Z 2015-06-09 09:17
    关注

    因为你是在for循环里定义的listSonBoard,这时候每循环一次时的listSonBoard都是一个新的集合,所以之前的listSonBoard中的内容都没了,你应该在for循环的外部定义List listSonBoard=new ArrayList();然后在for循环的时候listSonBoard.add()将新增的内容添加到集合里面。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?