servlet从Java枚举中跳过一个元素
我想使用枚举跳过某个请求参数。我使用下面的代码,但它没有给我想要的结果。有人能告诉我如何从枚举中跳过一个元素,或者下面的代码有什么问题吗
for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) {
if("James".equalsIgnoreCase(e.nextElement().toString())) {
e.nextElement();
continue;
} else {
list.add(e.nextElement().toString());
}
}
# 1 楼答案
问题是,您在
if
中调用了e.nextElement()
两次。这将消耗两种元素应首先将元素存储在字符串类型中,然后进行比较:-
你不需要在
e.nextElement()
之后的toString()
。它将只给您String
,因为您使用的是泛型类型作为补充说明,在这种情况下,我更愿意使用
while
循环,因为迭代的数量不是固定的。下面是for-loop
的等效while
循环版本:-# 2 楼答案
您在跳过多个元素的每个循环中调用
nextElement()
多次。您只需要调用nextElement()
一次。类似于# 3 楼答案
因为每次当您call
nextElement()
时,所以每次调用此方法时都会从枚举中获取下一个元素。若枚举中并没有对象,您也可能会得到异常,您将尝试获取它因此,只需更改代码并只调用
nextElement()
一次即可