我有类似的代码
Enumeration parameterEnum = request.getParameterNames()
while(parameterEnum.hasMoreElements()){}
如果我将它从while语句更改为if语句有什么区别?
答案 0 :(得分:3)
如果将其更改为if
,它将执行一次或根本不执行 - while
语句将无限期执行,直到ParameterEnum.hasMoreElements()
返回false。
答案 1 :(得分:2)
如果我理解你的要求,那么当前代码将继续运行括号中的任何内容,直到没有元素为止。这假设括号中的内容取消了元素。如上面所示,它是一个无限循环,永远不会结束。
如果您将while
转换为if
,则括号中的内容只会运行一次。
如果Request.getParameterNames()
返回“空”无论是什么,那么两种情况都不会做任何事情。
答案 2 :(得分:1)
if 会更快,更快!!!其复杂度为O(1)
,而的复杂度为O(N)
!!!
因此,输入越大,使用 if 而不是时越好; - )
答案 3 :(得分:0)
您可能会考虑for
语句,而不是if
。
if(ParameterEnum.hasMoreElements()) {}
if
只会运行一次
while(ParameterEnum.hasMoreElements()) {}
while
将持续运行,除非您增加enum
。
另一个选项是for
:
for(Enumeration paramEnum = Request.getParameterNames();
parameEnum.hasMoreElements();) {}
这类似于while
,并且只要hasMoreElements()
方法返回true就会运行,因此使用nextElement()
增加枚举非常重要。