2013-09-13 3 views
1

Застрял, используя старую версию java, поэтому я не могу отбросить список массивов в строку и задавался вопросом, как я могу успешно преобразовать массив arrayList в массив. Вот мой код:ArrayList to Array в java 1.4.2

String racesArray[] = request.getParameterValues("races"); 
    ArrayList races = new ArrayList(); 

    for (int i = 0; i < racesArray.length; ++i) { 
     String s = racesArray[i]; 
     if (s != null && s.length() > 0) { 
      races.add(s); 
     } 
    } 
    final String[] racesArray1 = (String[])races.toArray(new Object[races.size()]); 

Вышеуказанные коды дает мне ClassCastException

EDIT: Изменены, чтобы избежать путаницы на переменных

+1

Вы начинаете с массива. Почему у вас средний шаг? Но что не так с вашим решением? –

+0

@sotiriosDelimanolis Мне нужно удалить нули и пустые строки, но мне нужно это в массиве для отправки в базу данных. Переменные в исходном массиве относятся к форме – Dan

+0

Проверьте строки в массиве String. Они не «Струны». – JNL

ответ

2

Попробуйте это:

String[] racesArray = { "raceWhite", "raceBlack", "raceInd", "raceAsian", "raceHaw", "raceInter", "raceUnknown" }; 
List races = Arrays.asList(racesArray); 
String[] racesArray1 = (String[]) races.toArray(new String[races.size()]); 

Возьмите внимание на последнюю строку: новая строка не новый объект - это было главной причиной вашей проблемы.

Удачи вам в Java 1.4.2 :), и я рекомендую книгу Джошуа Блоха «Эффективная Ява» 1-го издания. Это для Java 1.4 и затрагивает самые важные аспекты повседневного программирования.

1

вы можете это так:

int countNull = 0; 
for(String s : racesArray) 
    if(s == null) 
     countNull++; 

int i = 0; 
String arr = new String[racesArray.length-countNull]; 
for(String s : racesArray) { 
    if(s != null) { 
     arr[i++] = s; 
    } 
} 
+0

это не сработает, так как код в вопросе заключается в устранении нулевых значений из строки []. ваш код просто копирует массив. –

+0

А, извините, я ошибся, я обновил свой код. – kelunik

4

Задача находится в первой строке.

Ваш String array не содержит Strings.

String[] racesArray = {raceWhite, raceBlack, raceInd, raceAsian, raceHaw, raceInter, raceUnknown} 

объявим его как "Струны"

String[] racesArray = {"raceWhite", "raceBlack", "raceInd", "raceAsian", "raceHaw"}; 

Problem 2:

Вам нужно создать new String[] и не new Object[]

final String[] racesArray1 = (String[])races.toArray(new String[races.size()]); 

Помните, Строка - это объект. Объект не может быть удален от строки.


+0

Они являются строковыми переменными из формы, я надеялся, что было бы легче понять, а затем пройти через все «getParameterValues» mumbo jumbo – Dan

+0

@ Jonathon lol. Затем см. Отредактированный ответ. – JNL

+0

Довольно уверены, что это переменные, так как ни один из этих элементов, как строки, не имеет смысла как «расы». Поэтому мы не можем видеть: 'String raceWhite =« White »;' и т. Д. –