2013-11-20 28 views
3

我已經掃描逐行到一個ArrayList的文件。 然後我創建一個新的ArrayList,我想暫時存儲該行,以便可以訪問某些值。通過拆分中的選項卡的Java

Ex。 IDname(標籤)的ID號(標籤)票(標籤)日期

所以,我創建了一個名爲voteSubmission臨時ArrayList中,我經過FILEREAD陣列中的每個字符串。

爲什麼我得到的錯誤不兼容的類型,我的拆分法?

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中的所有數組。要做到這一點,你必須創建類型爲String []的ArrayList,像這樣:

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

分裂()的輸出是類型字符串[]數組的和你正在試圖分配到ArrayList類型,這是INCOMPAT IBLE。

更改您的代碼

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); 
      } 
     } 
    }