Re: cast to sub-class or extending instance of super or a.n.other
Richard Maher wrote:
Random thoughts: - Keeping them in synch, redundant, extra o/head
That's "overhead", right?
Don't be afraid to spell it out - it's all right. At 30 words per minute, the
two characters you didn't type would have cost you less than one second, and
made your post more readable.
I don't know enough about HashMaps and HashTables (I'll read more today) but
There are a number of implementations of 'java.util.Map' in the standard API,
let alone third-party libraries. I'm not aware of any called 'HashTable'.
There is an old implementation, 'java.util.Hashtable', that you should eschew
in favor of 'java.util.HashMap'. 'Hashtable', besides having nearly all its
methods synchronized, sports the helper type 'Enumeration', which is something
like a lame 'Iterator' that lacks the fail-fast behavior of its 'Iterator'.
You're better off using 'HashMap' or another implementation, and wrap it in
'Collections.synchronizedMap()' if you need synchronized methods. There are
also 'Map' implementations in the 'java.util.concurrent' package for better
performance or more sophisticated locking in multi-threaded applications.
I still like the look of ArrayLists, so I'm gonna stick with them a bit
longer. A guiding factor in the design is that by far and away the
biggest/most-often lookup hit is via "Index". Aren't HashThings more of a
key/value construct? Named/Valued pairs?
Five minutes with the 'Map' Javadocs will answer that question for you. But
yes, as the Javadocs state, a 'Map' instance is an "object that maps keys to
values." And no, the keys do not have to be names.
Not all 'Map' implementations are named with the word part 'Hash'. Examples
include 'Attributes', 'AuthProvider', 'ConcurrentSkipListMap', 'EnumMap',
'Properties', 'RenderingHints' and 'TreeMap', just to name a few from the
standard API.
As to comparing 'List' to 'Map', that's a kind of apples-to-oranges
comparison. They have different purposes and characteristics.
You should know about maps. They are a fundamental data structure, and a
fundamental part of the collections API. If all you have in your toolbox is a
hammer, everything begins to look like a nail. It is not a good idea to delay
the acquisition of that knowledge.
--
Lew