2013-11-20 4 views
3

У меня есть файл, отсканированный по строкам в ArrayList. Затем я создаю новый ArrayList, в котором я хочу временно сохранить эту строку, чтобы я мог получить доступ к определенным значениям.Разбиение по вкладкам в Java

Ex. Имя (вкладка) IDnumber (tab) vote (tab) date

Итак, я создаю временный ArrayList с именем voteSubmission, и я просматриваю каждую строку в массиве fileRead.

Почему я получаю ошибку несовместимого типа для моего метода split?

ArrayList<String> voteSubmission = new ArrayList<String>(); 
for(String x : fileRead) 
{ 
voteSubmission = x.split("\t"); 
} 

ответ

3

split method возвращает массив, не является ArrayList.

Либо работайте с массивом, либо преобразуйте его в ArrayList вручную.

0

Ошибка: Type mismatch: cannot convert from String[] to ArrayList<String>

Это означает, что x.split("\t") обеспечивает String[] массив, но назначить его ArrayList.

Если вы хотите, чтобы это было в ArrayList, вы должны преобразовать его так:

new ArrayList<String>(Arrays.asList(x.split("\t"))); 

Но так как вы делаете это в цикле, вероятно, что вы хотели бы сохранить все массивы в ArrayList. Чтобы сделать это, вы должны создать ArrayList типа String [], как это:

ArrayList<String[]> voteSubmission = new ArrayList<String[]>(); 
for(String x : fileRead){ 
    voteSubmission.add((x.split("\t"))); 
} 
2

x.split("\t"); эта функция возвращает массив не список массива

split функция гласит, что:

Разделяет эту строку вокруг совпадений данного регулярного выражения.

Этот метод работает как бы путем вызова метода разделения с двумя аргументами с данным выражением и предельным аргументом нулевого значения. Таким образом, в результирующем массиве не включаются строки .

Возвращает:

массив строк, вычисленных, разделяя эту строку вокруг спички данного регулярного выражения

Вы можете попробовать изменить свой код так:

ArrayList<String> voteSubmission = new ArrayList<String>(); 
    for(String x : fileRead) 
    { 
     for(String value: x.split("\t")) 
     { 
      voteSubmission.add(value); 
     } 
    } 
0

Выходной сигнал split() имеет массив типа string [], и вы пытаетесь назначить тип ArrayList, который является несовместимым кий.

Изменить код

ArrayList<String> voteSubmission = new ArrayList<String>(); 
    for(String x : fileRead) 
    { 
     String arr[] = x.split("\t"); 
     if(arr != null && arr.length > 0) 
     { 
      for(String value: arr) 
      { 
       voteSubmission.add(value); 
      } 
     } 
    } 
Смежные вопросы