On Mon, 27 Sep 1999, Moses DeJong wrote:

> 
> > However, this exception indicates that your program potentially
> > has a bug.. it's trying to iterate through the elements while
> > changing the contents of the Hashtable at the same time.
> >
> > -Archie
> 
> I wrote a little test program to double check that what I was doing
> was correct. I was using the Hashtable.keys() method to iterate a
> table and remove each key like the following example.
> 
> [...]      
>       for (search = h.keys(); search.hasMoreElements() ; ) {
>           elem = (String) search.nextElement();
> [...]
>           h.remove(elem);
>           System.out.println("removed");
>       }

According to my reading of the specs, this code does not necessarily work:
an enumeration is not a snapshot, and deleting stuff as you iterate
through the enumeration is a bit like sawing off the branch you are
sitting on.  Some implementations of keys() would fail in such
circumstances - especially if resizing of the hashtable occurred as a
result of all those removals - and still be correct implemetations.
Someone please correct me if I'm wrong here.

 -- 

  Chris Gray            [EMAIL PROTECTED]    [EMAIL PROTECTED]

Reply via email to