ses wrote:
So I find myself using rather a lot of maps in my latest piece of work
to represent nested objects e.g:
HashMap<Integer, HashMap<Integer,String>>
The generic argument inside the angle brackets should be 'Map', not
'HashMap'. If you use such nested structures, it should be similar
to:
Map <Integer, Map <Integer, String>> nestled = new HashMap <Integer,
Map <Integer, String>> ();
Where for example the first and second integers are attributes and
string is some value that an Integer-Integer combination corresponds
to. I only ever need to really put and get the String value based on
Your key is what? Not Integer. Not Integer looks up Integer. It's
Pair <Integer, Integer>.
IIUC.
the Integer attributes, but it seems a more effective tree like
structure than using a custom data structure and having to iterate
over it.
My question is, should I be worried about using maps in this manner,
would a custom data structure be better? I think I'm becoming too used
to using them.
What you show *is* a custom data structure.
That said, figure out what you're actually trying to accomplish.
Based on the verbal description, I read your requirement as to
implement a mapping from a pair of integers to a string, thus:
{ (Integer, Integer) -> String }.
What you implemented was { (Integer) -> { (Integer) -> String }}.
If your verbal description really does describe a mapping from an
integer pair to a string, implement it as such.
code methods for first and second. Also, if the fields are final, which
is good especially in a hash structure key, they need to be initialized.
In this case I suggest a constructor.