code: @NotNull
      public <K> Stream<T> distinctBy(@NotNull Function<? super T, ? extends K> classifier) {
          return new Stream<T>(params, new ObjDistinctBy<T, K>(iterator, classifier));
      }
docs: Returns {@code Stream} with distinct elements (as determined by {@code hashCode}
  and {@code equals} methods) according to the given classifier function.
  
  <p>This is a stateful intermediate operation.
  
  <p>Example:
  <pre>
  classifier: (str) -&gt; str.length()
  stream: ["a", "bc", "d", "ef", "ghij"]
  result: ["a", "bc", "ghij"]
  </pre>
  
  @param <K> the type of the result of classifier function
  @param classifier  the classifier function
  @return the new stream
  @since 1.1.8