Class ObjectIdSubclassMap<V extends ObjectId>

java.lang.Object
org.eclipse.jgit.lib.ObjectIdSubclassMap<V>
Type Parameters:
V - type of subclass of ObjectId that will be stored in the map.
All Implemented Interfaces:
Iterable<V>, ObjectIdSet

public class ObjectIdSubclassMap<V extends ObjectId> extends Object implements Iterable<V>, ObjectIdSet
Fast, efficient map specifically for ObjectId subclasses.

This map provides an efficient translation from any ObjectId instance to a cached subclass of ObjectId that has the same value.

If object instances are stored in only one map, ObjectIdOwnerMap is a more efficient implementation.

  • Field Details

    • INITIAL_TABLE_SIZE

      private static final int INITIAL_TABLE_SIZE
      See Also:
    • size

      int size
    • grow

      private int grow
    • mask

      private int mask
    • table

      V extends ObjectId[] table
  • Constructor Details

    • ObjectIdSubclassMap

      public ObjectIdSubclassMap()
      Create an empty map.
  • Method Details

    • clear

      public void clear()
      Remove all entries from this map.
    • get

      public V get(AnyObjectId toFind)
      Lookup an existing mapping.
      Parameters:
      toFind - the object identifier to find.
      Returns:
      the instance mapped to toFind, or null if no mapping exists.
    • contains

      public boolean contains(AnyObjectId toFind)
      Returns true if the objectId is contained within the collection.

      Returns true if this map contains the specified object.

      Specified by:
      contains in interface ObjectIdSet
      Parameters:
      toFind - the objectId to find
      Returns:
      whether the collection contains the objectId.
    • add

      public <Q extends V> void add(Q newValue)
      Store an object for future lookup.

      An existing mapping for must not be in this map. Callers must first call get(AnyObjectId) to verify there is no current mapping prior to adding a new mapping, or use addIfAbsent(ObjectId).

      Parameters:
      newValue - the object to store.
    • addIfAbsent

      public <Q extends V> V addIfAbsent(Q newValue)
      Store an object for future lookup.

      Stores newValue, but only if there is not already an object for the same object name. Callers can tell if the value is new by checking the return value with reference equality:

       V obj = ...;
       boolean wasNew = map.addIfAbsent(obj) == obj;
       
      Parameters:
      newValue - the object to store.
      Returns:
      newValue if stored, or the prior value already stored and that would have been returned had the caller used get(newValue) first.
    • size

      public int size()
      Get number of objects in map
      Returns:
      number of objects in map
    • isEmpty

      public boolean isEmpty()
      Whether size() is 0.
      Returns:
      true if size() is 0.
    • iterator

      public Iterator<V> iterator()
      Specified by:
      iterator in interface Iterable<V extends ObjectId>
    • insert

      private void insert(V newValue)
    • grow

      private void grow()
    • initTable

      private void initTable(int sz)
    • createArray

      private final V[] createArray(int sz)