Uploaded image for project: 'Commons Collections'
  1. Commons Collections
  2. COLLECTIONS-394

FastTreeMap is not compatible with TreeMap

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 3.2.1
    • None
    • Map
    • None
    • all

    Description

      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.

      Attachments

        Activity

          People

            Unassigned Unassigned
            michaelpradel Michael Pradel
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: