会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132358个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 228楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/Lambda表达式(旧) 230楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 231楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 233楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 234楼

看到有同学问这个问题,关于109行的key判断,与老师有不同的见解。

image.png

这里老师的解释是因为为了处理多次请求url的参数,进行的判断,为了以后多次的请求服务。

但是我认为不是这样的。

首先我们看一下Request这个类,参数集合map是他的一个成员变量,并且是在构造器当中进行初始化的。

也就是说,当我们点击登录,形成url,去访问服务器,服务器Server类接收到客户端请求,receive方法会为每一个请求创建Request对象。所以每一次的请求当中刚开始参数集合都是空的,没有放任何东西。所以不存在多次url会影响map参数集合的情况。

image.png

所以为什么要写if判断key,是为了处理像hobby=eat&hobby=play这样的参数而存在的。

我们存储参数map集合的时候

键:参数名称

值:为了方便处理hobby这样的对应多个参数值的参数,采用List集合作为map的值。

再来看if的判断:

image.png

当处理hobby=eat时,

判断if,集合当中是否存在hobby这样的键,不存在,向集合当中添加键为:hobby,值为一个新的List集合。

继续向下执行,根据hobby键获取到新List集合,将具体的参数值eat添加到新的List集合当中。

当处理hobby=play时,

判断if,集合当中是否存在hobby这样的值,存在,不执行if块。

继续向下执行,根据hobby键获取到对应的List集合,将具体的参数值play添加到新的List集合当中。


所以if的存在是为了判断当前处理的参数是不是第一次参加到集合的键当中。

主要是为了处理像hobby这样拥有重复参数值的参数。

如果是第一次,为其创建新的List集合作为值,将具体参数值添加到List集合当中。

如果不是第一次,获取对应的List集合,向List集合当中继续添加具体的参数值。






JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 237楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 238楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 239楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/反射技术(旧) 240楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637