Как преобразовать arraylist в string java
Перейти к содержимому

Как преобразовать arraylist в string java

  • автор:

Converting String to ArrayList in Java

I converted the ArrayList list which contains «String1» , «String2» to String by using list.toString() . The resulted string format is [String1, String2] . Is there any way to convert this result back to ArrayList ?

asked Oct 14, 2013 at 7:15
747 2 2 gold badges 10 10 silver badges 36 36 bronze badges
Have a look at the split method of the String class — it may be what you are looking for.
Oct 14, 2013 at 7:16

What is preventing you from keeping the ArrayList instead of converting it to a String and back int an ArrayList? Usually you can also convert a ArrayList into a String[] with the toArray method.

Oct 14, 2013 at 7:22
Why do you need to do this? What are you trying to accomplish?
Oct 14, 2013 at 7:25
Nothing. I just wanted to know whether list.toString() is reversable or not.
Oct 14, 2013 at 7:35

3 Answers 3

Try applying the following code

String value = "[String1,String2,String3]"; value = value.subString(1,value.length()-1); String[] split = value.split(","); List sampleList = Arrays.asList(split); 

8,426 2 2 gold badges 27 27 silver badges 33 33 bronze badges
answered Oct 14, 2013 at 7:21
939 1 1 gold badge 9 9 silver badges 23 23 bronze badges

No. This won’t necessarily give an ArrayList , which is what the question asked for. The right hand side of the last line needs to be new ArrayList(Arrays.asList(split)) .

Oct 14, 2013 at 7:39

@David Wallace, thanks for your suggestion. why the right hand side of the last line needs to be new ArrayList(Arrays.asList(split))? Can you please clear my doubt?

Oct 14, 2013 at 8:03

Just because the OP said he wanted to have the result as an ArrayList , but the specification for Arrays.asList doesn’t require that it returns an ArrayList . I believe that the current version of Java 7 does in fact return an ArrayList from Arrays.asList ; but it’s not required to by the specification, and a future version may return something different.

Преобразование ArrayList в String [] в Java

Сделали этот ответ с обновленным подходом с JDK-11, представляющим новый одинаково производительный API для toArray(T[]) и схожий по синтаксису с Stream.toArray .

Naman 26 июль 2018, в 18:40
Поделиться:
collections

16 ответов

Лучший ответ

List list = ..; String[] array = list.toArray(new String[0]); 
List list = new ArrayList(); //add some stuff list.add("android"); list.add("apple"); String[] stringArray = list.toArray(new String[0]); 

Метод toArray() без передачи каких-либо аргументов возвращает Object[] . Поэтому вам нужно передать массив как аргумент, который будет заполнен данными из списка и возвращен. Вы также можете передать пустой массив, но вы также можете передать массив с требуемым размером.

Важное обновление. Первоначально использованный выше код new String[list.size()] . Однако этот blogpost показывает, что благодаря оптимизации JVM использование new String[0] теперь лучше.

Переделать ArrayList в обычный массив String[]

Но Eсlipse ругается на ; причем вне зависимости от того как я пытаюсь преобразовать, в этом случае тоже будет ошибка:

String[] url = <>; // ошибка url = linkList.toArray(new String[linkList.size()]); 

В этом варианте нет ошибки:

String[] url = linkList.toArray(new String[linkList.size()]); 

Но если попытаться вывести на консоль, то вместо данных я получаю вот такую ошибку:

Ljava.lang.String;@45ds364

А вот такой вариант крашит программу:

lk.setText("Ссылка: " +url[2]); 

Такой нормально покажет ссылку:

lk.setText("Ссылка: " +linkList.get(2)); 

Соответственно вопрос в чем может быть ошибка и как лучше преобразовать ArrayList в обычный массив.
Отслеживать
1,552 2 2 золотых знака 11 11 серебряных знаков 17 17 бронзовых знаков
задан 7 фев 2014 в 13:54
41 1 1 золотой знак 1 1 серебряный знак 4 4 бронзовых знака

Нижеследующий фрагмент нормально компилится. Может вы что-то недоговариваете? ArrayList linkList = new ArrayList(); String[] url = new String[linkList.size()]; url = linkList.toArray(url); > Но если попытаться вывести на консоль, то вместо данных я получаю вот такую ошибку: > > Ljava.lang.String;@45ds364 Это не ошибка, это нормальное поведение. Метод toString() у массивов не переопределен. если хотите получить строковое представление массива используйте Arrays.deepToString(myArray) > String[] url = <>; // ошибка такого синтаксиса в Java нет вовсе.

7 фев 2014 в 14:07

> А вот такой вариант крашит программу: > > lk.setText(«Ссылка: » +url[2]); Скиньте сюда сообщение об ошибке и стэктрейс, если несложно.

7 фев 2014 в 14:10

02-07 14:33:55.393: E/AndroidRuntime(377): FATAL EXCEPTION: main 02-07 14:33:55.393: E/AndroidRuntime(377): java.lang.ArrayIndexOutOfBoundsException Насколько я понимаю массив просто пуст и при попытке обратиться к несуществующими значению выскакивает ошибка, так как исключения не прописаны. Но если я прав, почему строковый массив пуст тогда как с динамическим все нормально.

7 фев 2014 в 14:44

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

Convert String array to ArrayList [duplicate]

Beware: Arrays.asList(. ) creates an AbstractList, not a real list. So you can do stuff like wordList.sort((a, b) -> a.length() — b.length()), but you can not do wordList.remove(0), or add to it. This will throw UnsupportedOperationException.

Oct 22, 2015 at 22:08

This code creates a List but it is not an ArrayList. So it is an incorrect answer. You cant delete elements from that List -> will throw an exception.

Mar 16, 2017 at 15:04

@Vito I have to agree that this is probably not a solution to a real problem unless someone can tell my why you would want to convert String[] to List and then not update the list.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *