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]