[Kaffe] I am getting a ConcurrentModificationException
Moses DeJong
dejong at cs.umn.edu
Tue Sep 28 07:10:13 PDT 1999
On Mon, 27 Sep 1999, Chris Gray wrote:
>
> 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");
> > }
This code has to work, there is no other way to iterate over the
elements in a Hashtable with the 1.1 API. JDK 1.2 introduces new
iterator APIs, but the only way to iterate over the elements in
a Hashtable is to use the elements() or keys() methods. Besides, the
Enumeration that is returned from the Hashtable.keys() method is
a different object, it should not break if the internals of
a Hashtable change.
later
mo
> 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 chris at kiffer.eunet.be chris_gray at bcs.org.uk
>
More information about the kaffe
mailing list