[ https://issues.apache.org/jira/browse/COLLECTIONS-244?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Michael Heuer updated COLLECTIONS-244: -------------------------------------- Attachment: multi-map.tar.gz > Proposal to support generic multi-key maps with keys of different types > ----------------------------------------------------------------------- > > Key: COLLECTIONS-244 > URL: https://issues.apache.org/jira/browse/COLLECTIONS-244 > Project: Commons Collections > Issue Type: Improvement > Components: Map > Affects Versions: Generics > Reporter: Michael Heuer > Priority: Minor > Attachments: multi-map.tar.gz > > > MultiKeyMap as designed can only accept keys of the same type, if made to > support generics, i.e. > MultiKeyMap<MultiKey<String>,Integer> map = ...; > map.put("foo", "bar", 10); > // not possible > //MultiKeyMap<MultiKey<String,Integer>,Double> map = ...; > Attached is a proposal that may support multi-key maps with keys of different > types. I do not believe varying numbers of typed keys can be supported in a > single interface, thus this proposal includes > BinaryKey<K1,K2> > BinaryKeyMap<K1,K2,V> extends Map<BinaryKey<K1,K2>,V> > TertiaryKey<K1,K2,K3> > TertiaryKeyMap<K1,K2,K3,V> extends Map<TertiaryKey<K1,K2,K3>,V> > QuaternaryKey<K1,K2,K3,K4> > QuaternaryKeyMap<K1,K2,K3,K4,V> extends Map<QuaternaryKey<K1,K2,K3,K4>,V> > To prevent unnecessary object creation, I also propose to support > MapIterator-style iterators: > BinaryKeyMapIterator<K1,K2,V> extends Iterator<V> > TertiaryKeyMapIterator<K1,K2,K3,V> extends Iterator<V> > QuaternaryKeyMapIterator<K1,K2,K3,K4,V> extends Iterator<V> > Current multi-map MapIterator support is implemented as Iterator<K1> but I > find that Iterator<V> makes more sense here. It is not possible to support > MapIterator<K,V> without object creation, e.g. > MapIterator<BinaryKey<K1,K2>,V> must create BinaryKey objects for each call > to next(). -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]