android/guava/src/com/google/common/collect/HashBiMap.java
private void replaceValueInEntry(int entry, @NullableDecl V newValue, boolean force) {
    checkArgument(entry != ABSENT);
    int newValueHash = Hashing.smearedHash(newValue);
    int newValueIndex = findEntryByValue(newValue, newValueHash);
    if (newValueIndex != ABSENT) {
      if (force) {
        removeEntryValueHashKnown(newValueIndex, newValueHash);
        if (entry == size) { // this entry got moved to newValueIndex
          entry = newValueIndex;
        }
      } else {
        throw new IllegalArgumentException("Value already present in map: " + newValue);
      }
    }
    // we do *not* update insertion order, and it isn't a structural modification!
    deleteFromTableVToK(entry, Hashing.smearedHash(values[entry]));
    values[entry] = newValue;
    insertIntoTableVToK(entry, newValueHash);
  }
private void replaceValueInEntry(int entry, @NullableDecl V newValue, boolean force) {
    checkArgument(entry != ABSENT);
    int newValueHash = Hashing.smearedHash(newValue);
    int newValueIndex = findEntryByValue(newValue, newValueHash);
    if (newValueIndex != ABSENT) {
      if (force) {
        removeEntryValueHashKnown(newValueIndex, newValueHash);
        if (entry == size) { // this entry got moved to newValueIndex
          entry = newValueIndex;
        }
      } else {
        throw new IllegalArgumentException("Value already present in map: " + newValue);
      }
    }
    // we do *not* update insertion order, and it isn't a structural modification!
    deleteFromTableVToK(entry, Hashing.smearedHash(values[entry]));
    values[entry] = newValue;
    insertIntoTableVToK(entry, newValueHash);
  }
private void replaceValueInEntry ( int entry , @ NullableDecl V newValue , boolean force ) { checkArgument ( entry != ABSENT ) ; int newValueHash = Hashing . smearedHash ( newValue ) ; int newValueIndex = findEntryByValue ( newValue , newValueHash ) ; if ( newValueIndex != ABSENT ) { if ( force ) { removeEntryValueHashKnown ( newValueIndex , newValueHash ) ; if ( entry == size ) { // this entry got moved to newValueIndex entry = newValueIndex ; } } else { throw new IllegalArgumentException ( "Value already present in map: " + newValue ) ; } } // we do *not* update insertion order, and it isn't a structural modification! deleteFromTableVToK ( entry , Hashing . smearedHash ( values [ entry ] ) ) ; values [ entry ] = newValue ; insertIntoTableVToK ( entry , newValueHash ) ; }
Updates the specified entry to point to the new value: removes the old value from the V-to-K
mapping and puts the new one in. The entry does not move in the insertion order of the bimap.
Updates the specified entry to point to the new value : removes the old value from the V - to - K mapping and puts the new one in . The entry does not move in the insertion order of the bimap .