ArrayList в массив строк в java

ArrayList<String> newArray = new ArrayList<String>();
newArray = urlList.getUrl();
for( int i = 0 ; i < newArray.size();i++)
{
    System.out.println(newArray.get(i));
}

newArray.toArray(mStrings );// is this correct 
mStrings = newArray.toArray();//  or this to convert ArrayList ot String array here

for( int i = 0 ; i < mStrings.length;i++)
{
    System.out.println(mStrings[i]);
}

РЕДАКТИРОВАТЬ:, когда я попробую, как показано ниже, я получаю исключение из null-указателя:

try
{
    newArray.toArray(mStrings );
    for(int i = 0 ; i < mStrings.length; i++)
    {
        System.out.println(mStrings[i]);
    }
} catch( NullPointerException e )
{
    System.out.println(e);
}

Ответы

Ответ 1

Зависит от того, что вы хотите сделать. Оба правильные

ToArray()          Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого до последнего элемента).

Обратитесь здесь

toArray (T [] a)          Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого до последнего элемента); тип выполнения возвращаемого массива - тип указанного массива. Если список соответствует указанному массиву, он возвращается в нем. В противном случае новый массив выделяется типом среды выполнения указанного массива и размером этого списка.

Обратитесь здесь

В первом вы хотите получить массив. В последнем у вас есть массив, вы просто хотели его заполнить.

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


В основном это то, что происходит во втором случае:

  • Размер списка - это меры.
  • (a) Если размер списка меньше, чем размер массива, создается новый массив типа, предоставленного как аргумент.

    (b) Иначе, список сбрасывается в указанном массиве.

Единственное преимущество этого - избегать кастинга. Две формы одинаковы. Если вы используете массив объектов. то есть.

     myList.toArray() <==> toArray(new Object[0])

Теперь, если вы передадите неинициализированный массив, вы получите исключение NullPointerException. Лучший способ сделать это:

 String[] y = x.toArray(new String[0]);

Пожалуйста, прочтите документ

Ответ 2

Обычно пишу

String[] array = collection.toArray(new String[collection.size()]);

потому что таким образом

  • Я получаю массив типа, который я хочу.
  • Мне не нужно объявлять массив перед вызовом Collection.toArray(T[]).

Ответ 3

Первый вариант лучше, так как он позволяет передавать в типизированном массиве, который затем заполняется внутри метода.

Вторая опция возвращает Object [] - поэтому вам придется использовать ее для использования методов String.

Ответ 4

В простой java я использую что-то вроде

rolesList.toArray(new Integer[rolesList.size()]);

для преобразования списка в массив. Не знаю в андроиде.

Ответ 5

Как насчет этого

 List a = new ArrayList();
   a.add("wer");
   a.add("sff");
   String[] f= (String[]) a.toArray(new String[0]);
   System.out.println(f[0]);