Re: Using a lot of Maps
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.
class Pair <T, U> { final T first; final U second; }
public class Foo
{
Map <Pair <Integer, Integer>, String> nestles = new HashMap <Pair
<Integer, Integer>, String> ();
// etc.
}
If I misinterpreted the requirement description, please clarify.
--
Lew