Converting String to ArrayList in Java
I converted the 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
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
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
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
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.