[
https://issues.apache.org/jira/browse/COLLECTIONS-394?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13220946#comment-13220946
]
Michael Pradel commented on COLLECTIONS-394:
--------------------------------------------
It seems the problem affects several other methods in FastTreeMap, specifically
methods that have been added to TreeMap in Java 1.6. E.g. TreeMap.headMap(K)
existed before Java 1.6 and is overridden by FastTreeMap, while
TreeMap.headMap(K, boolean) got added in Java 1.6. and is not overridden by
FastTreeMap. All inherited methods do not refer to the 'map' field, and
therefore use the wrong map.
One way to fix these problems is to override all public methods from TreeMap in
FastTreeMap. Since I'm not familiar with FastTreeMap's implementation, I'll
leave this task to someone more experienced with the Commons Collections.
> FastTreeMap is not compatible with TreeMap
> ------------------------------------------
>
> Key: COLLECTIONS-394
> URL: https://issues.apache.org/jira/browse/COLLECTIONS-394
> Project: Commons Collections
> Issue Type: Bug
> Components: Map
> Affects Versions: 3.2.1
> Environment: all
> Reporter: Michael Pradel
>
> FastTreeMap extends TreeMap in a way that doesn't preserve the superclass
> behavior. For example, the following code prints 'null', but I would expect
> it to print '1=1', which is what TreeMap does:
> TreeMap map = new FastTreeMap();
> //TreeMap map = new TreeMap();
> map.put(1, "1");
> map.put(3, "3");
>
> Entry e = map.floorEntry(2);
> System.out.println(e);
> This behavior is surprising and can hit you every time a reference of type
> TreeMap refers to an instance of FastTreeMap. A subclass instance used
> through a superclass interface shouldn't change the visible behavior of its
> superclass.
> The reason for this problem seems to be that FastTreeMap both extends TreeMap
> and delegates to a TreeMap via the 'map' field. I.e., there are two map
> instances for a single FastTreeMap instance.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira