//一个用户上线之后将上线信息通过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();
}
}
}
看下这个map怎么存的
首先,当集合获取到迭代器也就是执行coll.iterator()
之后,获得的iterator对象是指向集合之外的空白的地方,iterator.hasNext()
判断当前位置下一个是否含有元素,返回类型是Boolean
类型,iterator.next()
将iterator迭代器对象指针向下移动一次,并返回移动后指向的指针,需要注意的是,迭代都是在原有的集合上进行,并不会改变或者复制