HashMap存储的使用

最近做一个项目里面要用的socket协议,向服务器发送请求获取返回值,这块要涉及到异步任务处理,一般发送的时候不会只发送一个请求(int cmd),我这块用的是Handler传值的,有一个请求,我就会有一个handler与之对应,所以后来想到了用HashMap<Integer, List<Handler>> msgHandlerMap来处理这些命令和线程。

map里面添加数据:(int cmd, Handler handler)

                             if(msgHandlerMap.containsKey(cmd)){

                                    List<Handler> list = msgHandlerMap.get(cmd);

                                    if(list == null){

                                    list = new ArrayList<Handler>();

                                    if(!list.contains(handler)){

                                          list.add(handler);

                                    }

                        }        

                          }else{

                                   List<Handler> lstHandler = new ArrayList<Handler>();
                                                  lstHandler.add(handler);
                                   msgHandlerMap.put(command, lstHandler);

                                }

map里面删除数据:(int cmd, Handler handler)

                                 List<Handler> lstHandler = msgHandlerMap.get(command);
                                                  if(lstHandler!=null)
                                lstHandler.remove(handler);

map遍历通过handler发送消息:

                                Iterator iterator = msgHandlerMap.keySet().iterator();
                                     while (iterator.hasNext()) {
                               Integer cmdResponse = (Integer) iterator.next();
                               List<Handler> lstHandler = msgHandlerMap .get(cmdResponse);

                               if(cmdResponse==cmd){

                               for (int i = 0; i < lstHandler.size(); i++) {
                                     Handler handler2Notify = lstHandler.get(i);
                                    if (handler2Notify != null) {
                             handler2Notify.sendMessage();

                            lstHandler.remove(handler2Notify);

                              }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值