protected int index()

in core/src/main/java/gnu/trove/TIntObjectHashMap.java [304:328]


  protected int index(int val) {
    int[] set = _set;
    Object[] values = _values;
    if (values == EMPTY_OBJECT_ARRAY) return -1;
    int length = set.length;
    int hash = _hashingStrategy.computeHashCode(val) & 0x7fffffff;
    int index = hash % length;

    if (!isFree(values, index) &&
        (isRemoved(values, index) || set[index] != val)) {
      // see Knuth, p. 529
      int probe = 1 + (hash % (length - 2));

      do {
        index -= probe;
        if (index < 0) {
          index += length;
        }
      }
      while (!isFree(values, index) &&
             (isRemoved(values, index) || set[index] != val));
    }

    return isFree(values, index) ? -1 : index;
  }