Метод сборщиков toMap () в Java с примерами
Метод toMap () - это статический метод класса Collectors, который возвращает Collector, который накапливает элементы в Map, ключи и значения которого являются результатом применения предоставленных функций сопоставления к входным элементам. Обратите внимание, что ключи уникальны, и если в любом случае ключи дублируются, то при выполнении операции сбора возникает исключение IllegalStateException.
Есть 3 перегрузки метода toMap ():
toMap (функция keyMapper, функция valueMapper)
Синтаксис:
общедоступный статический сборщик <T,?, Map>
toMap (функция keyMapper, функция valueMapper)
куда
- T : Тип входных элементов.
- Карта : Выходная карта.
- Сборщик интерфейса: изменяемая операция сокращения, которая накапливает входные элементы в изменяемый контейнер результата, при необходимости преобразуя накопленный результат в окончательное представление после того, как все входные элементы были обработаны. Операции восстановления могут выполняться как последовательно, так и параллельно.
- toMap () : статический метод класса Collectors и возвращает Collector, который собирает элементы в карту, ключи и значения которой являются результатом применения функций сопоставления к входным элементам. Класс Collectors находится в пакете java.util.streams.
Параметры: этот метод принимает следующие параметры:
- keyMapper : функция сопоставления для создания ключей
- valueMapper : функция отображения для создания значений
Возвращаемое значение: этот метод возвращает Collector, который собирает элементы в карту, ключи и значения которой являются результатом применения функций сопоставления к входным элементам.
Below example illustrates the above method:
// Java program to demonstrate// toMap() method with unique keys import java.util.stream.Collectors;import java.util.stream.Stream;import java.util.*; public class GFG { public static void main(String[] args) { // Create a String with no repeated keys Stream<String[]> str = Stream .of(new String[][] { { "GFG", "GeeksForGeeks" }, { "g", "geeks" }, { "G", "Geeks" } }); // Convert the String to Map // using toMap() method Map<String, String> map = str.collect( Collectors.toMap(p -> p[0], p -> p[1])); // Print the returned Map System.out.println("Map:" + map); }} |
Map:{G=Geeks, g=geeks, GFG=GeeksForGeeks}
toMap(Function keyMapper, Function valueMapper, BinaryOperator<U> mergeFunction)
Это перегрузка метода toMap (), в котором к ключу и значениям добавляется дополнительный параметр, и это функция слияния . Задача функции - объединить значения, имеющие один и тот же ключ, способом, определенным кодировщиком. Этот перегруженный метод рекомендуется только в том случае, если есть одинаковые ключи для нескольких значений. Ниже приводится простой пример.
Синтаксис:
общедоступный статический сборщик <T,?, Map>
toMap (Функция keyMapper,
Функция valueMapper,
BinaryOperator <U> mergeFunction)
куда
- T : Тип входных элементов.
- Карта : Выходная карта.
- Сборщик интерфейса: изменяемая операция сокращения, которая накапливает входные элементы в изменяемый контейнер результата, при необходимости преобразуя накопленный результат в окончательное представление после того, как все входные элементы были обработаны. Операции восстановления могут выполняться как последовательно, так и параллельно.
- toMap () : статический метод класса Collectors и возвращает Collector, который собирает элементы в карту, ключи и значения которой являются результатом применения функций сопоставления к входным элементам. Класс Collectors находится в пакете java.util.streams.
Параметры: этот метод принимает следующие параметры:
- keyMapper : функция сопоставления для создания ключей
- valueMapper : функция отображения для создания значений
- mergeFunction : функция слияния, используемая для разрешения конфликтов между значениями, связанными с одним и тем же ключом, как указано в Map.merge (Object, Object, BiFunction)
Возвращаемое значение: этот метод возвращает Collector, который собирает элементы в карту, ключи которой являются результатом применения функции сопоставления клавиш к элементам ввода, а значения являются результатом применения функции сопоставления значений ко всем элементам ввода, равным ключу. и объединяя их с помощью функции слияния
Below example illustrates the above method:
// Java program to demonstrate// toMap() method without unique keys import java.util.stream.Collectors;import java.util.stream.Stream;import java.util.*; public class GFG { public static void main(String[] args) { // Create a String with repeated keys Stream<String[]> str = Stream .of(new String[][] { { "GFG", "GeeksForGeeks" }, { "g", "geeks" }, { "GFG", "geeksforgeeks" } }); // Get Map from String // using toMap() method Map<String, String> map = str .collect(Collectors .toMap(p -> p[0], p -> p[1], (s, a) -> s + ", " + a)); // Print the Map System.out.println("Map:" + map); }} |
Map:{g=geeks, GFG=GeeksForGeeks, geeksforgeeks}
toMap(Function keyMapper, Function valueMapper, BinaryOperator<U> mergeFunction, Supplier mapSupplier)
Это перегруженный метод toMap () с дополнительным параметром .ie Suppliers. Здесь нам нужно передать поставщика. Поставщик - это интерфейс класса java.util.Function. Это функциональный интерфейс, поэтому его можно использовать в качестве цели назначения для лямбда-выражения или ссылки на метод. Если мы хотим вернуть LinkedHashMap, нам нужно передать поставщик как LinkedHashMap :: new. В следующем примере мы будем делать то же самое.
Синтаксис:
public static <T, K, U, M extends Map> Collector
toMap (Функция keyMapper,
Функция valueMapper,
BinaryOperator <U> mergeFunction,
Карта поставщика Поставщик)
куда
- T : Тип входных элементов.
- Карта : Выходная карта.
- Сборщик интерфейса: изменяемая операция сокращения, которая накапливает входные элементы в изменяемый контейнер результата, при необходимости преобразуя накопленный результат в окончательное представление после того, как все входные элементы были обработаны. Операции восстановления могут выполняться как последовательно, так и параллельно.
- toMap () : статический метод класса Collectors и возвращает Collector, который собирает элементы в карту, ключи и значения которой являются результатом применения функций сопоставления к входным элементам. Класс Collectors находится в пакете java.util.streams.
Параметры: этот метод принимает следующие параметры:
- keyMapper : функция сопоставления для создания ключей
- valueMapper : функция отображения для создания значений
- mergeFunction : функция слияния, используемая для разрешения конфликтов между значениями, связанными с одним и тем же ключом, как указано в Map.merge (Object, Object, BiFunction)
- mapSupplier : функция, которая возвращает новую пустую карту, в которую будут вставлены результаты.
Возвращаемое значение: этот метод возвращает Collector, который собирает элементы в карту, ключи которой являются результатом применения функции сопоставления клавиш к элементам ввода, а значения являются результатом применения функции сопоставления значений ко всем элементам ввода, равным ключу. и объединяя их с помощью функции слияния
Below example illustrates the above method:
// Java program to demonstrate// toMap() method import java.util.stream.Collectors;import java.util.stream.Stream;import java.util.*; public class GFG { public static void main(String[] args) { // Create a String to be converted Stream<String[]> Ss1 = Stream .of(new String[][] { { "GFG", "GeeksForGeeks" }, { "g", "geeks" }, { "GFG", "Geeks" } }); // Get Map from String // using toMap() method LinkedHashMap<String, String> map2 = Ss1 .collect(Collectors .toMap( p -> p[0], p -> p[1], (s, a) -> s + ", " + a, LinkedHashMap::new)); // Print the Map System.out.println("Map:" + map2); }} |
Map:{GFG=GeeksForGeeks, Geeks, g=geeks}
Вниманию читателя! Не переставай учиться сейчас. Ознакомьтесь со всеми важными концепциями Java Foundation и коллекций с помощью курса "Основы Java и Java Collections" по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .