Class HashSlotMap

  • All Implemented Interfaces:
    java.lang.Iterable<ScriptableObject.Slot>, SlotMap

    public class HashSlotMap
    extends java.lang.Object
    implements SlotMap
    This class implements the SlotMap interface using a java.util.HashMap. This class has more overhead than EmbeddedSlotMap, especially because it puts each "Slot" inside an intermediate object. However it is much more resistant to large number of hash collisions than EmbeddedSlotMap and therefore we use this implementation when an object gains a large number of properties.
    • Constructor Detail

      • HashSlotMap

        public HashSlotMap()
    • Method Detail

      • size

        public int size()
        Description copied from interface: SlotMap
        Return the size of the map.
        Specified by:
        size in interface SlotMap
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: SlotMap
        Return whether the map is empty.
        Specified by:
        isEmpty in interface SlotMap
      • query

        public ScriptableObject.Slot query​(java.lang.Object key,
                                           int index)
        Description copied from interface: SlotMap
        This is an optimization that is the same as get with an accessType of SLOT_QUERY. It should be used instead of SLOT_QUERY because it is more efficient.
        Specified by:
        query in interface SlotMap
      • get

        public ScriptableObject.Slot get​(java.lang.Object key,
                                         int index,
                                         ScriptableObject.SlotAccess accessType)
        Description copied from interface: SlotMap
        Return the Slot that matches EITHER "key" or "index". (It will use "key" if it is not null, and otherwise "index". "accessType" is one of the constants defined in ScriptableObject.
        Specified by:
        get in interface SlotMap
      • addSlot

        public void addSlot​(ScriptableObject.Slot newSlot)
        Description copied from interface: SlotMap
        Insert a new slot to the map. Both "name" and "indexOrHash" must be populated. Note that ScriptableObject generally adds slots via the "get" method.
        Specified by:
        addSlot in interface SlotMap
      • remove

        public void remove​(java.lang.Object key,
                           int index)
        Description copied from interface: SlotMap
        Remove the slot at either "key" or "index".
        Specified by:
        remove in interface SlotMap