Okay, I thought you were talking about the instantiation of the map
implementation itself. The fact of the matter is that, although there is
some overhead to instantiating an iterator object, looping over a list of
attributes and doing n string compares is not all that efficient either. It
just depends on what your priority is: iterating or name lookup. The
instantiation of the object is only necessary if you want to iterate (now I
understand what you meant by "isEmpty"). It might not be too off-the-wall to
claim that the lookup by name will be the more frequent usage case for SAX.
I like the AttributeMap interface with a "getIterator()" method because it
is simple, elegant and standard. If there is a general consensus that the
performance issue is significant (to be honest I am not entirely convinced
that this will be a bottleneck), your AttributeList interface is just fine,
since it provides both types of access.
Cheers,
Matthew