Java-программа для преобразования ArrayList в LinkedList

Опубликовано: 15 Сентября, 2022

Учитывая список массивов, ваша задача состоит в том, чтобы написать программу для преобразования данного списка массивов в связанный список на 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.

Код: