@CanIgnoreReturnValue
  @Override
  public int setCount(@Nullable E element, int count) {
    checkNonnegative(count, "count");

    Count existingCounter;
    int oldCount;
    if (count == 0) {
      existingCounter = backingMap.remove(element);
      oldCount = getAndSet(existingCounter, count);
    } else {
      existingCounter = backingMap.get(element);
      oldCount = getAndSet(existingCounter, count);

      if (existingCounter == null) {
        backingMap.put(element, new Count(count));
      }
    }

    size += (count - oldCount);
    return oldCount;
  }
@CanIgnoreReturnValue
  @Override
  public int setCount(@Nullable E element, int count) {
    checkNonnegative(count, "count");

    Count existingCounter;
    int oldCount;
    if (count == 0) {
      existingCounter = backingMap.remove(element);
      oldCount = getAndSet(existingCounter, count);
    } else {
      existingCounter = backingMap.get(element);
      oldCount = getAndSet(existingCounter, count);

      if (existingCounter == null) {
        backingMap.put(element, new Count(count));
      }
    }

    size += (count - oldCount);
    return oldCount;
  }
@ CanIgnoreReturnValue @ Override public int setCount ( @ Nullable E element , int count ) { checkNonnegative ( count , "count" ) ; Count existingCounter ; int oldCount ; if ( count == 0 ) { existingCounter = backingMap . remove ( element ) ; oldCount = getAndSet ( existingCounter , count ) ; } else { existingCounter = backingMap . get ( element ) ; oldCount = getAndSet ( existingCounter , count ) ; if ( existingCounter == null ) { backingMap . put ( element , new Count ( count ) ) ; } } size += ( count - oldCount ) ; return oldCount ; }
Roughly a 33% performance improvement over AbstractMultiset.setCount().
Roughly a 33% performance improvement over AbstractMultiset . setCount () .