Mr. Kestle, "Map<C, K,V> CollectionUtils.toMap(Collection<C> input, Transformer<C,K> keyTransformer, Transformer<C,V> valueTransformer, Map<K,V> map)"
I wouldn't usually reply, in the hopes that you put your code through a compiler and apologize for being condescending all by yourself, but... What I think you meant to type was (with <C,K,V> being the type variables of the method itself): <C,K,V> Map<K,V> CollectionUtils.toMap(Collection<C> input, Transformer<C,K> keyTransformer, Transformer<C,V> valueTransformer, Map<K,V> map); So, the actual method might look like: public static <C,K,V> Map<K,V> toMap(Collection<C> input, Transformer<C,K> keyTransformer, Transformer<C,V> valueTransformer, Map<K,V> map) { for (C c : input) { map.put(keyTransformer.transform(c), valueTransformer.transform(c)); } return map; } If you put "Map<C,K,V>" in your code, the compiler will complain with the error message "wrong number of type arguments; required 2." I might also change the method's name to "fillMap" rather than "toMap" as it seems more descriptive of what you're doing. If it were toMap, I wouldn't expect the input map to be there at all. The transformer type parameters would give you enough type safety and you could just instantiate a HashMap or something to return it. On 9/2/07, Stephen Kestle <[EMAIL PROTECTED]> wrote: > I wouldn't usually reply, in the hopes that you re-read the method > signature... > C is the input collection > K,V are the usual types for map > There are two transformers Transformer<C,K> and Transformer<C,V> that > transform the collection input type to the respective map key, value types. > > The second signature only has <K,V> as there is no value transformer, so > the input collection is the type of value. > > Cheers > > Stephen > > James Carman wrote: > > What is "Map<C,K,V>" here? The Map interface only has two type > > parameters, right? Shouldn't it just be Map<K,V>? > > > > On 8/29/07, *Stephen Kestle * <[EMAIL PROTECTED] > > <mailto:[EMAIL PROTECTED]>> wrote: > > > > Hi John, > > > > I have not opened a ticket yet, but ... I have had very similar > > requirements, and will [most-likely] be putting something in that > > will solve your problem. > > > > However, it will not be a class - consider this method > > > > Map<C, K,V> CollectionUtils.toMap(Collection<C> input, > > Transformer<C,K> keyTransformer, Transformer<C,V> > > valueTransformer, Map<K,V> map) > > > > You could then do what you wanted, passing in your integer > > transformer for the key, and potentially MultiHashMap for the map. > > > > NB - this is in an ideal (and we're heading to that) collections > > world. MultiHashMap will need to be changed to extend map > > properly and implement the interface in a consistent way (not > > breaking Map contract etc). > > > > Also note that there will be other variations on the method - most > > commonly > > > > Map<K,V> CollectionUtils.toMap(Collection<V> input, > > Transformer<V,K> keyTransformer){ > > return toMap(input, keyTransformer, NOPTransformer, new > > HashMap<K,V>()); > > } > > > > I'll raise a ticket within the next few days - watch this list! > > > > Cheers > > > > Stephen > > > > John wrote: > >> Hi, > >> > >> I'm new to the collections mailing list and I have a class I > >> think would be appropriate to be donated to the collections API. > >> > >> This is an extension of the MultiHashMap and filters a given > >> Collection by a given field. It will put the objects into the map > >> using the field value as the key. > >> > >> For example, lets say I have a class X which has an integer i. I > >> have four instances of X each with the following names and values > >> of i. > >> > >> x1 i=1 > >> x2 i=2 > >> x3 i=2 > >> x4 i=5 > >> > >> The resulting MultiHashMap will contain the following after a > >> call to > >> sortCollection(X.class, "i"); has been made. > >> > >> key | Objects > >> 1 | x1 > >> 2 | x2, x3 > >> 5 | x4 > >> > >> I can then get a Collection of sorted objects by asking the map > >> for the key value. I find this very useful in many situations I > >> have come across. I will of course make the required doc, package > >> and src formatting changes to the class before submitting it. > >> > >> Please can you take a look and tell me if it is worth committing > >> this to the Collections repository. What is the process I need to > >> go through before committing? I'm a bit pressed for time at the > >> mo' so I can't really spend too much time working on the > >> Collections API as a regular developer. I am a big fan of the > >> commons Collections API and commons project in general, just wish > >> I had more time to get involved. > >> > >> Kind regards, > >> > >> John Hunsley. > >> Technical Supervisor, Cy-nap Ltd. > >> > >> ------------------------------------------------------------------------ > >> > >> --------------------------------------------------------------------- > >> To unsubscribe, e-mail: > >> [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > >> For additional commands, e-mail: [EMAIL PROTECTED] <mailto:[EMAIL > >> PROTECTED]> > > > > -- > > ------------------------------------------------------------------------ > > * <http://www.orionhealth.com>* > > > > > > > > *Stephen Kestle Software Engineer* > > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > P: +64 9 638 0619 > > M: +64 27 453 7853 > > F: +64 9 638 0699 > > S: skestle > > www.orionhealth.com <http://www.orionhealth.com> > > > > > > This e-mail and any attachments are intended only for the person > > to whom it is addressed and may contain privileged, proprietary, > > or other data protected from disclosure under applicable law. If > > you are not the addressee or the person responsible for delivering > > this to the addressee you are hereby notified that reading, > > copying or distributing this transmission is prohibited. If you > > have received this e-mail in error, please telephone us > > immediately and remove all copies of it from your system. Thank > > you for your co-operation. > > > > > > -- > ------------------------------------------------------------------------ > * <http://www.orionhealth.com>* > > > > *Stephen Kestle Software Engineer* > [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > P: +64 9 638 0619 > M: +64 27 453 7853 > F: +64 9 638 0699 > S: skestle <callto:skestle> > www.orionhealth.com <http://www.orionhealth.com> > > > This e-mail and any attachments are intended only for the person to whom > it is addressed and may contain privileged, proprietary, or other data > protected from disclosure under applicable law. If you are not the > addressee or the person responsible for delivering this to the addressee > you are hereby notified that reading, copying or distributing this > transmission is prohibited. If you have received this e-mail in error, > please telephone us immediately and remove all copies of it from your > system. Thank you for your co-operation. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]