junior
Для чего нужны функциональные интерфейсы ToDoubleFunction, ToIntFunction и ToLongFunction?
Эти интерфейсы принимают один аргумент обобщённого типа T и возвращают примитивный результат. Они являются специализациями Function, оптимизированными для возврата примитива.
| Интерфейс | Вход | Выход |
|---|---|---|
ToDoubleFunction<T> |
T |
double |
ToIntFunction<T> |
T |
int |
ToLongFunction<T> |
T |
long |
Пример: ToIntFunction используется в Stream.mapToInt():
Пример
List<String> words = List.of("a", "bb", "ccc");
int[] lengths = words.stream()
.mapToInt(String::length) // String::length — это ToIntFunction<String>
.toArray(); // [1, 2, 3]
На собеседовании: покажите связь с Stream API — именно в
mapToInt/mapToDouble/mapToLongэти интерфейсы используются чаще всего.