commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Henri Yandell (JIRA)" <>
Subject [jira] Updated: (COLLECTIONS-244) Proposal to support generic multi-key maps with keys of different types
Date Thu, 13 Sep 2007 00:43:32 GMT


Henri Yandell updated COLLECTIONS-244:

        Fix Version/s: Generics
    Affects Version/s:     (was: Generics)

> Proposal to support generic multi-key maps with keys of different types
> -----------------------------------------------------------------------
>                 Key: COLLECTIONS-244
>                 URL:
>             Project: Commons Collections
>          Issue Type: Improvement
>          Components: Map
>            Reporter: Michael Heuer
>            Priority: Minor
>             Fix For: Generics
>         Attachments: multi-map.tar.gz
> MultiKeyMap as designed can only accept keys of the same type, if made to support generics,
> 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.

View raw message