Java:在迭代期间使用“if”而不是while循环的影响

时间:2009-07-21 16:51:59

标签: java

我有类似的代码

Enumeration parameterEnum = request.getParameterNames()
while(parameterEnum.hasMoreElements()){}

如果我将它从while语句更改为if语句有什么区别?

4 个答案:

答案 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()增加枚举非常重要。