You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by James Carman <ja...@carmanconsulting.com> on 2005/05/13 19:20:50 UTC

[collections] MultiMaps...

I have a case in my application where I want to map one key to multiple
values.  However, I don't want the values to be stored as a List.  I would
rather have MultiHashMap store the values in a Set of some kind (HashSet
maybe).  It would be nice if I could tell MultiHashMap what kind of
collection to use to store the values.  Maybe we could parameterize the
constructor...

public MultiHashMap( Factory factory )
{
  
}

The factory would be used to create a collection instance each time one is
needed for a new key in the map.  Maybe this is overkill and we could just
give it a Class instance and it can call newInstance() on that.  Anyway,
that would allow MultiHashMap to return any kind of collection, not just
Lists.  Of course, I could just create a new Set using the returned List,
but that's a lot of objects to create.  What do you guys think?



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Re: [collections] MultiMaps...

Posted by Stephen Colebourne <sc...@btopenworld.com>.
A decorator like this is definitely the preferred solution. Its been 
suggested before, but no one has yet had the itch to code it ;-)

Stephen


James Carman wrote:
> Upon further thought, why do we even have a class like MultiHashMap?
> Couldn't we write a generic MultiMap implementation that wraps another map
> and provides the "multiple" functionality?
> 
> public class MapUtils
> {
>   ...
>   public static MultiMap multiMap( Map implementation );
>   public static MultiMap multiMap( Map implementation, Factory
> collectionFactory );
>   ...
> }
> 
> 
> 
> 
> -----Original Message-----
> From: James Carman [mailto:james@carmanconsulting.com] 
> Sent: Friday, May 13, 2005 1:21 PM
> To: 'Jakarta Commons Developers List'
> Subject: [collections] MultiMaps...
> 
> 
> I have a case in my application where I want to map one key to multiple
> values.  However, I don't want the values to be stored as a List.  I would
> rather have MultiHashMap store the values in a Set of some kind (HashSet
> maybe).  It would be nice if I could tell MultiHashMap what kind of
> collection to use to store the values.  Maybe we could parameterize the
> constructor...
> 
> public MultiHashMap( Factory factory )
> {
>   
> }
> 
> The factory would be used to create a collection instance each time one is
> needed for a new key in the map.  Maybe this is overkill and we could just
> give it a Class instance and it can call newInstance() on that.  Anyway,
> that would allow MultiHashMap to return any kind of collection, not just
> Lists.  Of course, I could just create a new Set using the returned List,
> but that's a lot of objects to create.  What do you guys think?
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-dev-help@jakarta.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


RE: [collections] MultiMaps...

Posted by James Carman <ja...@carmanconsulting.com>.
Upon further thought, why do we even have a class like MultiHashMap?
Couldn't we write a generic MultiMap implementation that wraps another map
and provides the "multiple" functionality?

public class MapUtils
{
  ...
  public static MultiMap multiMap( Map implementation );
  public static MultiMap multiMap( Map implementation, Factory
collectionFactory );
  ...
}




-----Original Message-----
From: James Carman [mailto:james@carmanconsulting.com] 
Sent: Friday, May 13, 2005 1:21 PM
To: 'Jakarta Commons Developers List'
Subject: [collections] MultiMaps...


I have a case in my application where I want to map one key to multiple
values.  However, I don't want the values to be stored as a List.  I would
rather have MultiHashMap store the values in a Set of some kind (HashSet
maybe).  It would be nice if I could tell MultiHashMap what kind of
collection to use to store the values.  Maybe we could parameterize the
constructor...

public MultiHashMap( Factory factory )
{
  
}

The factory would be used to create a collection instance each time one is
needed for a new key in the map.  Maybe this is overkill and we could just
give it a Class instance and it can call newInstance() on that.  Anyway,
that would allow MultiHashMap to return any kind of collection, not just
Lists.  Of course, I could just create a new Set using the returned List,
but that's a lot of objects to create.  What do you guys think?



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org