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)
Solution. The solution to this exception is to check whether the next position of an iterable is filled or empty. You should only move to this position if the check returns that the position is not empty.
NoSuchElementException Thrown by the nextElement method of an Enumeration to indicate that there are no more elements in the enumeration.
In Iterator, we can read and remove element while traversing element in the collections. Using Enumeration, we can only read element during traversing element in the collections. 2. Access. It can be used with any class of the collection framework.
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); }
for (String key : Collections.list(e)) System.out.println(key);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With