iterating through Enumeration of hastable keys throws NoSuchElementException error
152,626
Solution 1
You call nextElement()
twice in your loop. This call moves the enumeration pointer forward.
You should modify your code like the following:
while (e.hasMoreElements()) {
String param = e.nextElement();
System.out.println(param);
}
Solution 2
for (String key : Collections.list(e))
System.out.println(key);
Solution 3
Every time you call e.nextElement()
you take the next object from the iterator. You have to check e.hasMoreElement()
between each call.
Example:
while(e.hasMoreElements()){
String param = e.nextElement();
System.out.println(param);
}
Solution 4
You are calling nextElement twice. Refactor like this:
while(e.hasMoreElements()){
String param = (String) e.nextElement();
System.out.println(param);
}
Solution 5
You're calling e.nextElement()
twice inside your loop when you're only guaranteed that you can call it once without an exception. Rewrite the loop like so:
while(e.hasMoreElements()){
String param = e.nextElement();
System.out.println(param);
}
Author by
David Cunningham
Updated on July 05, 2022Comments
-
David Cunningham almost 2 years
I am trying to iterate through a list of keys from a hash table using enumeration however I keep getting a NoSuchElementException at the last key in list?
Hashtable<String, String> vars = new Hashtable<String, String>(); vars.put("POSTCODE","TU1 3ZU"); vars.put("EMAIL","[email protected]"); vars.put("DOB","02 Mar 1983"); Enumeration<String> e = vars.keys(); while(e.hasMoreElements()){ System.out.println(e.nextElement()); String param = (String) e.nextElement(); }
Console output:
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)