Stuart Ballard wrote: > My requirement is for a map which holds references to two > other maps, "front" and "back". The keySet() of my map is the union of > front.keySet() and back.keySet(). The value corresponding > to a given key is 'front.containsKey(key) ? front.get(key) : > back.get(key)'. Both front and back can be accessed directly through > other code and may change in any way without my map being notified. > How can I implement size() without a full iteration?
If you extend AbstractMap (why on earth would you with this specialised implementation?) then size is defined as entrySet().size(). From what you wrote it would appear that entrySet().size() in your case will be a function of the size of the front and back entrysets. Even if these are modified outside of the main map, as long as it's not concurrent (in which case you're on your own), then you should still be able to calculate the map size if the front and back maps maintain their size correctly. If you can't provide a valid implementation for any concrete method that you are supposed to implement, then it seems quite unreasonable of you to expect any inherited methods to work for you. I think it quite reasonable for a method like putAll to expect to be able to use any of the non-optional methods of Map/Set/Iterator to do its job - even if it doesn't document exactly which methods it uses. David Holmes _______________________________________________ Classpath mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/classpath

