2015-12-06 3 views
3

В моем коде я конвертирую ArrayList<String> в int[] с помощью этого кода.Преобразование ArrayList <String> в int []

ArrayList<String> oneList = new ArrayList<String>(); 

oneList.add("7"); 
oneList.add("525"); 
oneList.add("85"); 
oneList.add("365"); 
oneList.add("78"); 
oneList.add("1"); 

String[] stringArray = oneList.toArray(new String[oneList.size()]); 

int[] arrayOfValues = new int[oneList.size()]; 

for(int i = 0;i < stringArray.length;i++) 
{ 
    try 
    { 
     arrayOfValues[i] = Integer.parseInt(stringArray[i]); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Not an integer value"); 
    } 
} 

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

+1

Вы должны проходить через все элементы и конвертировать каждый из них. Трудно делать лучше и быстрее ... –

+0

@ guillaumegirod-vitouchkina Я не понимаю, что вы подразумеваете под повторением каждого элемента. Это то, что делает нижеследующий ответ Вячеслав Веденин? – Dan

+0

Да, ваша строка [] stringArray = oneList.toArray (новая String [oneList.size()]); можно избежать, как в приведенном решении. –

ответ

3

Лучше использовать следующий код:

ArrayList<String> oneList = new ArrayList<String>(); 

oneList.add("7"); 
oneList.add("525"); 
oneList.add("85"); 
oneList.add("365"); 
oneList.add("78"); 
oneList.add("1"); 

int[] arrayOfValues = new int[oneList.size()]; 
int i = 0; 
for(String value: oneList) 
{ 
    try 
    { 
     arrayOfValues[i] = Integer.parseInt(value); 
     i++; 
    } 
    catch(Exception e) 
    { 
     System.out.println("Not an integer value"); 
    } 
} 

В коде:

1) Вы создаете String [] массив, но это не нужно вообще.

2) Используя для каждого цикла лучше, чем для (INT I ..)

3) Если у Вас есть исключение, arrayOfValues ​​имеет пустой элемент, например, если oneList = { "1", «ааа "," 2 "}, затем arrayOfValues ​​= {1, 0, 2}. Однако иногда лучше, если arrayOfValues ​​= {1, 2}

+0

Почему для каждого цикла лучше? –

+1

Это более читаемо в большинстве случаев, поэтому другие программисты могут легко понять ваш код. –

+0

Я просто не вижу необходимости, когда вы заменяете его на 'for (int i ...', тогда do 'String value = oneList .get (i) 'в первой строке. Хотя это более читаемо, оно не так кратки, когда вы должны помнить о том, чтобы вручную назначать и увеличивать' i' в двух разных строках. –

Смежные вопросы