Java-программа для преобразования ArrayList в LinkedList
Учитывая список массивов, ваша задача состоит в том, чтобы написать программу для преобразования данного списка массивов в связанный список на Java.
Примеры:
Input: ArrayList: [Geeks, forGeeks, A computer Portal] Output: LinkedList: [Geeks, forGeeks, A computer Portal] Input: ArrayList: [1, 2, 3, 4, 5] Output: LinkedList: [1, 2, 3, 4, 5]
ArrayList — ArrayListявляется частью структуры коллекции и присутствует в пакете java.util . Он предоставляет нам динамические массивы в Java. Хотя это может быть медленнее, чем стандартные массивы, но может быть полезно в программах, где требуется много манипуляций с массивом.
Связанный список . Связанный список представляет собой линейную структуру данных, в которой элементы не хранятся в смежных ячейках памяти. Элементы в связанном списке связаны с помощью указателей, как показано на рисунке ниже:
подходы
Существует множество подходов к преобразованию данного списка массивов в связанный список в Java. Некоторые из них перечислены ниже.
- Использование грубой силы или наивного метода
- Использование конструктора списка
- Использование потокового API Java 8
- Использование библиотеки Google Guava
- Преобразование между несовместимыми типами
1. Использование грубой силы или наивного метода
В этом методе создается пустой LinkedList, и все элементы, присутствующие в ArrayList, добавляются к нему один за другим.
Алгоритм :
- Получить ArrayList для преобразования.
- Создайте пустой LinkedList.
- Перебрать элементы в ArrayList.
- Для каждого элемента добавьте его в LinkedList.
- Вернуть сформированный LinkedList.
Код:
2. Использование конструктора списка
В этом методе ArrayList передается в качестве параметра в конструктор LinkedList.
Алгоритм :
- Получить ArrayList для преобразования.
- Создайте LinkedList, передав ArrayList в качестве параметра в конструкторе LinkedList.
- Вернуть сформированный LinkedList.
Код:
3. Использование потокового API Java 8
Этот метод включает в себя преобразование ArrayList в Stream и сбор элементов потока в LinkedList с использованием метода Stream.collect(), который принимает сборщик.
Алгоритм :
- Получить ArrayList для преобразования.
- Преобразуйте ArrayList в поток.
- Используя коллекторы, соберите поток ArrayList и преобразуйте его в LinkedList.
- Теперь соберите LinkedList.
- Вернуть сформированный LinkedList.
Код:
4. Использование библиотеки Google Guava
Guava также предоставляет реализацию LinkedList, которую можно использовать для создания LinkedList из другой коллекции с помощью метода Collection.addAll().
Алгоритм :
- Получить ArrayList для преобразования.
- Создайте пустой LinkedList.
- Добавьте элементы ArrayList в LinkedList, используя метод LinkedList.addAll() и передав ArrayList в качестве параметра.
- Вернуть сформированный LinkedList.
Код:
5. Преобразование между несовместимыми типами
Этот метод можно использовать, если требуемый TreeMap имеет другой тип, чем HashMap. В этом случае преобразование необходимо выполнить вручную.
Алгоритм :
- Получить ArrayList для преобразования.
- Преобразуйте ArrayList в поток.
- Преобразуйте элементы потока в нужный тип путем приведения. Это можно сделать, передав функцию приведения в качестве параметра функции map().
- Используя коллекторы, соберите поток ArrayList и преобразуйте его в LinkedList.
- Теперь соберите LinkedList.
- Вернуть сформированный LinkedList.
Код: