Как преобразовать список в список

Я хочу преобразовать List в List .

Один из существующих методов возвращает List и я хочу преобразовать его в List . Есть ли прямой путь в Java, а затем итерация и преобразование элемента по элементу?

Передайте List в качестве параметра конструктору нового ArrayList .

 List objectList = new ArrayList(stringList); 

Любая Collection может быть передана в качестве аргумента конструктору, пока его тип расширяет тип ArrayList , поскольку String расширяет Object . Конструктор принимает Collection , но List – это субинтерфейс Collection , поэтому вы можете просто использовать List .

Любая коллекция java – это просто набор объектов, будь то строка или другая. Аргумент типа – это просто сахар. В зависимости от ситуации, например, имея дело с очень большими списками, вы можете просто ее конвертировать – очевидно, рискуя смешать два разных типа объектов в одном списке.

 List objectList = (List)stringList; 

И поставьте @SuppressWarning, чтобы избавиться от гадостей …

Лично, в то время как оба в настоящее время высоко оцененные ответы правильны в некотором смысле, я не думаю, что любой из них решает проблему элегантным, многоразовым способом, особенно если вам нужно делать это очень часто.

Предположим, что у вас есть старый старый код / ​​зависимость, который вы никак не можете изменить (чтобы он, по крайней мере, принял List Extends List как @ReverendGonzo предложил в своем комментарии . Предположим также, что вам нужно поговорить с этим устаревшим модулем много.

Я не думаю, что любое литье / копирование все время было бы терпимым в долгосрочной перспективе. Это делает ваш код уязвимым для коварных ошибок и трудно следовать или слегка (или резко) неэффективно и трудно читается.

Чтобы иметь читаемый и эффективный код производства, лучше инкапсулировать грязную часть в отдельный модуль, который имеет дело с иным безобидным, но безобразным литьем.

 class ProductionCode { public void doJob() { List strings = Arrays.asList("pear", "apple", "peach"); StringMagicUtils.dealWithStrings(strings); } } class StringMagicUtils { @SuppressWarnings("unchecked") public static void dealWithStrings(List strings) { ExternalStringMagic.dealWithStringsAsObjects((List) strings); } } // Legacy - cannot edit this wonderful code below ˇˇ class ExternalStringMagic { public static void dealWithStringsAsObjects(List stringsAsObjects) { // deal with them as they please } } 

Это довольно неэффективно, но по крайней мере вам не нужно писать много кода ~

 List stringList = new ArrayList(); List objectList = Arrays.asList(stringList.toArray()); 
 List ofObjects = new ArrayList(ofStrings); 

как в:

 import java.util.*; class C { public static void main( String[] args ) { List s = new ArrayList(); s.add("S"); List o = new ArrayList(s); o.add( new Object() ); System.out.println( o ); } } 

В качестве альтернативы вы можете попробовать метод addAll , если список объектов – это существующий список.

  • Почему class Java Vector (и Stack) считается устаревшим или устаревшим?
  • как преобразовать изображение в массив байтов в java?
  • Невосприимчивый KeyListener для JFrame
  • Gradle sourceCompatibility не влияет на подпроекты
  • Как установить цвет фона JLabel?
  • Как установить Java 8 на Mac
  • Как вставить строку между двумя строками в существующем excel с HSSF (Apache POI)
  • Как заставить cron запускать приложение Java GUI?
  • Отключить кнопку ok на JOptionPane.dialog, пока пользователь не даст вход
  • Как обрабатывать HTTP-аутентификацию с помощью HttpURLConnection?
  • Как настроить приложение JAX-RS, используя только annotations (без web.xml)?
  • Interesting Posts

    NHibernate.MappingException: Не требуется для: XYZ

    SLF4J: Не удалось загрузить class «org.slf4j.impl.StaticLoggerBinder». ошибка

    Java – почему нет перегрузки метода на основе возвращаемого типа?

    Как проверить внутреннее хранилище, используемое конкретным приложением Chromebook?

    Как создать собственный собственный stream / streambuf?

    Как установить OpenOffice Writer для изменения языка клавиатуры в соответствии с окружающим текстом?

    Возrotation временного объекта и привязка к константной ссылке

    Настройка цвета фона или WPF (4.0) ListBox – Windows 8

    Объединить несколько дочерних строк в одну строку MYSQL

    Как я могу создать функцию щелчка между подсказкой ввода-вывода A1-A10 для ввода пользователем чисел в vba

    Как разделить период времени на равные периоды в Excel

    Эффективный беззнаковый кран, исключающий поведение, определяемое реализацией

    Android уничтожает деятельность, убивает процессы

    Создание папки с именем «CON» в Windows

    Идиоматический поиск карты clojure по ключевому слову

    Давайте будем гением компьютера.