椰Ye 2023-04-08 10:20 采纳率: 63.2%
浏览 15
已结题

迭代器原理hasNext方法

Java迭代器使用
使用迭代器取出用户通信线程,但是为什么不进入呢。iterator.hasNext我认为在这里是true但是结果不是,不论登录几个用户都不进入循环。
  //一个用户上线之后将上线信息通过UserThread发送到其他用户,更新在线好友列表
    public void onlineNotice(String userID){

        //得到在线用户线程
        HashMap map= UserThreadsManage.map;
        Iterator iterator=map.keySet().iterator();
        System.out.println("here");
        //遍历,更新每个在线用户的好友列表,把这次登录用户改为在线
        while (iterator.hasNext()){
            Message msg=new Message();
            msg.setMsgType("onlineSet");
            msg.setContent(userID);
            String onlineUsers=iterator.next().toString(); //获取其他用户ID
            System.out.println("开始迭代111");
            msg.setUser(onlineUsers);
            Socket socket = UserThreadsManage.getUserThreads(onlineUsers).getSocket();
            try {
                ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
                out.writeObject(msg);
                System.out.println("完成输出流111");

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

进入这个函数之后执行不了循环语句。

img

尝试了解了一下迭代器原理,it.hasNext()方法不涉及指针的移动,只判断是判断是否还有下一元素。这样子看来我认为是有下一个元素的,但是没有。
  • 写回答

2条回答 默认 最新

  • Mini厂程序员 2023-04-08 10:49
    关注

    看下这个map怎么存的

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

报告相同问题?

问题事件

  • 系统已结题 4月17日
  • 已采纳回答 4月9日
  • 创建了问题 4月8日

悬赏问题

  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。
  • ¥20 CST怎么把天线放在座椅环境中并仿真
  • ¥15 任务A:大数据平台搭建(容器环境)怎么做呢?