## Uses of Interface
java.util.function.Function

Packages that use Function
java.security: Provides the classes and interfaces for the security framework.
java.util: Contains the collections framework, legacy collection classes, event model, date and time facilities, internationalization, and miscellaneous utility classes (a string tokenizer, a random-number generator, and a bit array).
java.util.concurrent: Utility classes commonly useful in concurrent programming.
java.util.function: Functional interfaces provide target types for lambda expressions and method references.
java.util.stream: Classes to support functional-style operations on streams of elements, such as map-reduce transformations on collections.

### Uses of Function in java.security

Methods in java.security with parameters of type Function
`Object` Provider.`computeIfAbsent(Object key, Function<? super Object,? extends Object> mappingFunction)` If the specified key is not already associated with a value (or is mapped to `null`), attempts to compute its value using the given mapping function and enters it into this map unless `null`.

### Uses of Function in java.util

Methods in java.util with parameters of type Function
`static <T,U extends Comparable<? super U>> Comparator<T>` Comparator.`comparing(Function<? super T,? extends U> keyExtractor)` Accepts a function that extracts a `Comparable` sort key from a type `T`, and returns a `Comparator<T>` that compares by that sort key.
`static <T,U> Comparator<T>` Comparator.`comparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)` Accepts a function that extracts a sort key from a type `T`, and returns a `Comparator<T>` that compares by that sort key using the specified `Comparator`.
`default V` Map.`computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)` If the specified key is not already associated with a value (or is mapped to `null`), attempts to compute its value using the given mapping function and enters it into this map unless `null`.
`V` HashMap.`computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)`
`V` Hashtable.`computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)`
`<U> Optional<U>` Optional.`flatMap(Function<? super T,Optional<U>> mapper)` If a value is present, apply the provided `Optional`-bearing mapping function to it, return that result, otherwise return an empty `Optional`.
`<U> Optional<U>` Optional.`map(Function<? super T,? extends U> mapper)` If a value is present, apply the provided mapping function to it, and if the result is non-null, return an `Optional` describing the result.
`default <U extends Comparable<? super U>> Comparator<T>` Comparator.`thenComparing(Function<? super T,? extends U> keyExtractor)` Returns a lexicographic-order comparator with a function that extracts a `Comparable` sort key.
`default <U> Comparator<T>` Comparator.`thenComparing(Function<? super T,? extends U> keyExtractor, Comparator<? super U> keyComparator)` Returns a lexicographic-order comparator with a function that extracts a key to be compared with the given `Comparator`.

### Uses of Function in java.util.concurrent

Methods in java.util.concurrent with parameters of type Function
`<U> CompletableFuture<U>` CompletableFuture.`applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)`
`<U> CompletionStage<U>` CompletionStage.`applyToEither(CompletionStage<? extends T> other, Function<? super T,U> fn)` Returns a new CompletionStage that, when either this or the other given stage complete normally, is executed with the corresponding result as argument to the supplied function.
`<U> CompletableFuture<U>` CompletableFuture.`applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)`
`<U> CompletionStage<U>` CompletionStage.`applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn)` Returns a new CompletionStage that, when either this or the other given stage complete normally, is executed using this stage's default asynchronous execution facility, with the corresponding result as argument to the supplied function.
`<U> CompletableFuture<U>` CompletableFuture.`applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)`
`<U> CompletionStage<U>` CompletionStage.`applyToEitherAsync(CompletionStage<? extends T> other, Function<? super T,U> fn, Executor executor)` Returns a new CompletionStage that, when either this or the other given stage complete normally, is executed using the supplied executor, with the corresponding result as argument to the supplied function.
`V` ConcurrentSkipListMap.`computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)` If the specified key is not already associated with a value, attempts to compute its value using the given mapping function and enters it into this map unless `null`.
`V` ConcurrentHashMap.`computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)` If the specified key is not already associated with a value, attempts to compute its value using the given mapping function and enters it into this map unless `null`.
`default V` ConcurrentMap.`computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)` If the specified key is not already associated with a value (or is mapped to `null`), attempts to compute its value using the given mapping function and enters it into this map unless `null`.

`CompletableFuture<T>`

CompletableFuture.`exceptionally(Function<Throwable,? extends T> fn)`
Returns a new CompletableFuture that is completed when this CompletableFuture completes, with the result of the given function of the exception triggering this CompletableFuture's completion when it completes exceptionally; otherwise, if this CompletableFuture completes normally, then the returned CompletableFuture also completes normally with the same value.

`CompletionStage<T>` CompletionStage.`exceptionally(Function<Throwable,? extends T> fn)` Returns a new CompletionStage that, when this stage completes exceptionally, is executed with this stage's exception as the argument to the supplied function.
`<U> void` ConcurrentHashMap.`forEachEntry(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, Consumer<? super U> action)` Performs the given action for each non-null transformation of each entry.
`<U> void` ConcurrentHashMap.`forEachKey(long parallelismThreshold, Function<? super K,? extends U> transformer, Consumer<? super U> action)` Performs the given action for each non-null transformation of each key.
`<U> void` ConcurrentHashMap.`forEachValue(long parallelismThreshold, Function<? super V,? extends U> transformer, Consumer<? super U> action)` Performs the given action for each non-null transformation of each value.
`<U> U` ConcurrentHashMap.`reduceEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)` Returns the result of accumulating the given transformation of all entries using the given reducer to combine values, or null if none.
`<U> U` ConcurrentHashMap.`reduceKeys(long parallelismThreshold, Function<? super K,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)` Returns the result of accumulating the given transformation of all keys using the given reducer to combine values, or null if none.
`<U> U` ConcurrentHashMap.`reduceValues(long parallelismThreshold, Function<? super V,? extends U> transformer, BiFunction<? super U,? super U,? extends U> reducer)` Returns the result of accumulating the given transformation of all values using the given reducer to combine values, or null if none.
`<U> U` ConcurrentHashMap.`searchEntries(long parallelismThreshold, Function<Map.Entry<K,V>,? extends U> searchFunction)` Returns a non-null result from applying the given search function on each entry, or null if none.
`<U> U` ConcurrentHashMap.`searchKeys(long parallelismThreshold, Function<? super K,? extends U> searchFunction)` Returns a non-null result from applying the given search function on each key, or null if none.
`<U> U` ConcurrentHashMap.`searchValues(long parallelismThreshold, Function<? super V,? extends U> searchFunction)` Returns a non-null result from applying the given search function on each value, or null if none.
`<U> CompletableFuture<U>` CompletableFuture.`thenApply(Function<? super T,? extends U> fn)`
`<U> CompletionStage<U>` CompletionStage.`thenApply(Function<? super T,? extends U> fn)` Returns a new CompletionStage that, when this stage completes normally, is executed with this stage's result as the argument to the supplied function.
`<U> CompletableFuture<U>` CompletableFuture.`thenApplyAsync(Function<? super T,? extends U> fn)`
`<U> CompletionStage<U>` CompletionStage.`thenApplyAsync(Function<? super T,? extends U> fn)` Returns a new CompletionStage that, when this stage completes normally, is executed using this stage's default asynchronous execution facility, with this stage's result as the argument to the supplied function.
`<U> CompletableFuture<U>` CompletableFuture.`thenApplyAsync(Function<? super T,? extends U> fn, Executor executor)`
`<U> CompletionStage<U>` CompletionStage.`thenApplyAsync(Function<? super T,? extends U> fn, Executor executor)` Returns a new CompletionStage that, when this stage completes normally, is executed using the supplied Executor, with this stage's result as the argument to the supplied function.
`<U> CompletableFuture<U>` CompletableFuture.`thenCompose(Function<? super T,? extends CompletionStage<U>> fn)`
`<U> CompletionStage<U>` CompletionStage.`thenCompose(Function<? super T,? extends CompletionStage<U>> fn)` Returns a new CompletionStage that, when this stage completes normally, is executed with this stage as the argument to the supplied function.
`<U> CompletableFuture<U>` CompletableFuture.`thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)`
`<U> CompletionStage<U>` CompletionStage.`thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn)` Returns a new CompletionStage that, when this stage completes normally, is executed using this stage's default asynchronous execution facility, with this stage as the argument to the supplied function.
`<U> CompletableFuture<U>` CompletableFuture.`thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn, Executor executor)`
`<U> CompletionStage<U>` CompletionStage.`thenComposeAsync(Function<? super T,? extends CompletionStage<U>> fn, Executor executor)` Returns a new CompletionStage that, when this stage completes normally, is executed using the supplied Executor, with this stage's result as the argument to the supplied function.

### Uses of Function in java.util.function

Subinterfaces of Function in java.util.function
`interface` `UnaryOperator<T>` Represents an operation on a single operand that produces a result of the same type as its operand.

Methods in java.util.function that return Function
`default <V> Function<T,V>` Function.`andThen(Function<? super R,? extends V> after)` Returns a composed function that first applies this function to its input, and then applies the `after` function to the result.
`default <V> Function<V,R>` Function.`compose(Function<? super V,? extends T> before)` Returns a composed function that first applies the `before` function to its input, and then applies this function to the result.
`static <T> Function<T,T>` Function.`identity()` Returns a function that always returns its input argument.

Methods in java.util.function with parameters of type Function
`default <V> Function<T,V>` Function.`andThen(Function<? super R,? extends V> after)` Returns a composed function that first applies this function to its input, and then applies the `after` function to the result.
`default <V> BiFunction<T,U,V>` BiFunction.`andThen(Function<? super R,? extends V> after)` Returns a composed function that first applies this function to its input, and then applies the `after` function to the result.
`default <V> Function<V,R>` Function.`compose(Function<? super V,? extends T> before)` Returns a composed function that first applies the `before` function to its input, and then applies this function to the result.

### Uses of Function in java.util.stream

Methods in java.util.stream that return Function
`Function<A,R>` Collector.`finisher()` Perform the final transformation from the intermediate accumulation type `A` to the final result type `R`.

Methods in java.util.stream with parameters of type Function
`static <T,A,R,RR> Collector<T,A,RR>` Collectors.`collectingAndThen(Collector<T,A,R> downstream, Function<R,RR> finisher)` Adapts a `Collector` to perform an additional finishing transformation.
`<R> Stream<R>` Stream.`flatMap(Function<? super T,? extends Stream<? extends R>> mapper)` Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.
`DoubleStream` Stream.`flatMapToDouble(Function<? super T,? extends DoubleStream> mapper)` Returns an `DoubleStream` consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.
`IntStream` Stream.`flatMapToInt(Function<? super T,? extends IntStream> mapper)` Returns an `IntStream` consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.
`LongStream` Stream.`flatMapToLong(Function<? super T,? extends LongStream> mapper)` Returns an `LongStream` consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.
`static <T,K> Collector<T,?,Map<K,List<T>>>` Collectors.`groupingBy(Function<? super T,? extends K> classifier)` Returns a `Collector` implementing a "group by" operation on input elements of type `T`, grouping elements according to a classification function, and returning the results in a `Map`.

`static <T,K,A,D> Collector<T,?,Map<K,D>>`

Collectors.`groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)`
Returns a `Collector` implementing a cascaded "group by" operation on input elements of type `T`, grouping elements according to a classification function, and then performing a reduction operation on the values associated with a given key using the specified downstream `Collector`.

`static <T,K,D,A,M extends Map<K,D>>
Collector<T,?,M>`

Collectors.`groupingBy(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)`
Returns a `Collector` implementing a cascaded "group by" operation on input elements of type `T`, grouping elements according to a classification function, and then performing a reduction operation on the values associated with a given key using the specified downstream `Collector`.

`static <T,K> Collector<T,?,ConcurrentMap<K,List<T>>>` Collectors.`groupingByConcurrent(Function<? super T,? extends K> classifier)` Returns a concurrent `Collector` implementing a "group by" operation on input elements of type `T`, grouping elements according to a classification function.

`static <T,K,A,D> Collector<T,?,ConcurrentMap<K,D>>`

Collectors.`groupingByConcurrent(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)`
Returns a concurrent `Collector` implementing a cascaded "group by" operation on input elements of type `T`, grouping elements according to a classification function, and then performing a reduction operation on the values associated with a given key using the specified downstream `Collector`.

`static <T,K,A,D,M extends ConcurrentMap<K,D>>
Collector<T,?,M>`

Collectors.`groupingByConcurrent(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)`
Returns a concurrent `Collector` implementing a cascaded "group by" operation on input elements of type `T`, grouping elements according to a classification function, and then performing a reduction operation on the values associated with a given key using the specified downstream `Collector`.

`<R> Stream<R>` Stream.`map(Function<? super T,? extends R> mapper)` Returns a stream consisting of the results of applying the given function to the elements of this stream.
`static <T,U,A,R> Collector<T,?,R>` Collectors.`mapping(Function<? super T,? extends U> mapper, Collector<? super U,A,R> downstream)` Adapts a `Collector` accepting elements of type `U` to one accepting elements of type `T` by applying a mapping function to each input element before accumulation.
`static <T,A,R> Collector<T,A,R>` Collector.`of(Supplier<A> supplier, BiConsumer<A,T> accumulator, BinaryOperator<A> combiner, Function<A,R> finisher, Collector.Characteristics... characteristics)` Returns a new `Collector` described by the given `supplier`, `accumulator`, `combiner`, and `finisher` functions.
`static <T,U> Collector<T,?,U>` Collectors.`reducing(U identity, Function<? super T,? extends U> mapper, BinaryOperator<U> op)` Returns a `Collector` which performs a reduction of its input elements under a specified mapping function and `BinaryOperator`.
`static <T,K,U> Collector<T,?,ConcurrentMap<K,U>>` Collectors.`toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)` Returns a concurrent `Collector` that accumulates elements into a `ConcurrentMap` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U> Collector<T,?,ConcurrentMap<K,U>>` Collectors.`toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)` Returns a concurrent `Collector` that accumulates elements into a `ConcurrentMap` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U> Collector<T,?,ConcurrentMap<K,U>>` Collectors.`toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)` Returns a concurrent `Collector` that accumulates elements into a `ConcurrentMap` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U> Collector<T,?,ConcurrentMap<K,U>>` Collectors.`toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)` Returns a concurrent `Collector` that accumulates elements into a `ConcurrentMap` whose keys and values are the result of applying the provided mapping functions to the input elements.

`static <T,K,U,M extends ConcurrentMap<K,U>>
Collector<T,?,M>`

Collectors.`toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier)`
Returns a concurrent `Collector` that accumulates elements into a `ConcurrentMap` whose keys and values are the result of applying the provided mapping functions to the input elements.

`static <T,K,U,M extends ConcurrentMap<K,U>>
Collector<T,?,M>`

Collectors.`toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier)`
Returns a concurrent `Collector` that accumulates elements into a `ConcurrentMap` whose keys and values are the result of applying the provided mapping functions to the input elements.

`static <T,K,U> Collector<T,?,Map<K,U>>` Collectors.`toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)` Returns a `Collector` that accumulates elements into a `Map` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U> Collector<T,?,Map<K,U>>` Collectors.`toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)` Returns a `Collector` that accumulates elements into a `Map` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U> Collector<T,?,Map<K,U>>` Collectors.`toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)` Returns a `Collector` that accumulates elements into a `Map` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U> Collector<T,?,Map<K,U>>` Collectors.`toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)` Returns a `Collector` that accumulates elements into a `Map` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U,M extends Map<K,U>> Collector<T,?,M>` Collectors.`toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier)` Returns a `Collector` that accumulates elements into a `Map` whose keys and values are the result of applying the provided mapping functions to the input elements.
`static <T,K,U,M extends Map<K,U>> Collector<T,?,M>` Collectors.`toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapSupplier)` Returns a `Collector` that accumulates elements into a `Map` whose keys and values are the result of applying the provided mapping functions to the input elements.