Dav*_*ham 56 java enumeration hashtable key
我试图使用枚举迭代哈希表中的键列表但是我一直在列表中的最后一个键获得NoSuchElementException?
Hashtable<String, String> vars = new Hashtable<String, String>();
vars.put("POSTCODE","TU1 3ZU");
vars.put("EMAIL","job.blogs@lumesse.com");
vars.put("DOB","02 Mar 1983");
Enumeration<String> e = vars.keys();
while(e.hasMoreElements()){
System.out.println(e.nextElement());
String param = (String) e.nextElement();
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
EMAIL POSTCODE
Exception in thread "main" java.util.NoSuchElementException: Hashtable Enumerator
at java.util.Hashtable$Enumerator.nextElement(Unknown Source)
at testscripts.webdrivertest.main(webdrivertest.java:47)
Ale*_*exR 102
你nextElement()在循环中调用两次.此调用将枚举指针向前移动.您应该修改您的代码,如下所示:
while (e.hasMoreElements()) {
String param = e.nextElement();
System.out.println(param);
}
Run Code Online (Sandbox Code Playgroud)
小智 65
for (String key : Collections.list(e))
System.out.println(key);
Run Code Online (Sandbox Code Playgroud)
dac*_*cwe 10
每次调用时e.nextElement()都从迭代器中获取下一个对象.你必须e.hasMoreElement()在每次通话之间进行检查.
例:
while(e.hasMoreElements()){
String param = e.nextElement();
System.out.println(param);
}
Run Code Online (Sandbox Code Playgroud)