@Override
  public List<SimilarUser> getUserNeighborhood(final long userID) {

    final DataModel dataModel = getDataModel();
    final UserSimilarity userSimilarityImpl = getUserSimilarity();

    final TopItems.Estimator<Long> estimator =
        new Estimator(userSimilarityImpl, userID, minSimilarity);

    final LongPrimitiveIterator userIDs =
        SamplingLongPrimitiveIterator.maybeWrapIterator(dataModel.getUserIDs(), getSamplingRate());

    return TopItems.getTopUsers(n, userIDs, null, estimator);
  }