2015-04-18 32 views
-1

我正在使用處理將數據從txt文件輸入到一組StringLists中。我現在想把這個StringLists一個接一個地寫入ArrayList。 但是,所有StringLists都輸入相同的ArrayList索引,即0使用處理的ArrayList內部的StringList

StringList lista = new StringList(); 
String [] listv; 
ArrayList <Via> listaVias = new ArrayList(); 
Via via= null; 

void setup() { 
    int contador = 0; 
    String lines [] = loadStrings("data.txt"); 
    Via ultimaVia = null; 
    for (String linha : lines) { 

     String[] params = split(linha, TAB); 
     float score = parseFloat(params[0]); 
     listaVias.add(via=new Via(score)); 
     for (int i=2; i<params.length; i++) { 
      via.append(params[i]); 
      //listaVias.add(via); 
     } 


     println(listaVias); 


     if (ultimaVia!=null && ultimaVia.isEqual(via)) { 
     } else { 
      if (via.size()>3) { 

       contador++; 

       if (contador==100) { 
        break; 
       } 
      } 
     } 


    ultimaVia = via; 
    } 
} 

這是我通過類TXT

0.999999999197 4 BAI2 SMAD2 SMAD4 SMAD3 
0.999999999197 4 GRK6 SMAD2 SMAD4 SMAD3 
0.999999999197 4 JUNB SMAD2 SMAD4 SMAD3 
0.999999999197 4 BZRAP1 SMAD2 SMAD4 SMAD3 
0.999999999197 4 RNPEPL1 SMAD2 SMAD4 SMAD3 
0.999999999197 4 SBF1 SMAD2 SMAD4 SMAD3 
0.999999999197 4 TRABD SMAD2 SMAD4 SMAD3 
0.999999999197 4 LDB1 SMAD2 SMAD4 SMAD3 
0.999999999197 4 VEGFB SMAD2 SMAD4 SMAD3 
0.999999999197 4 SKI SMAD2 SMAD4 SMAD3 
0.999999994595 3 SLC25A22 JUN EP300 
0.999999994595 3 S100A6 JUN EP300 
0.999999994595 3 FXYD2 JUN EP300 
0.999999994595 3 STK40 JUN EP300 
0.999999994595 3 HDAC7 JUN EP300 
0.999999994595 3 CLCN6 JUN EP300 
0.999999994595 3 PRDX2 JUN EP300 
0.999999994595 3 MYL6 JUN EP300 
0.999999994595 3 WDR82 JUN EP300 
0.999999994595 3 ADM JUN EP300 
0.999999994595 3 SNRPG JUN EP300 
0.999999994595 3 ZYX JUN EP300 
0.999999994402 4 SLC25A22 FOS JUN EP300 
0.999999994402 4 S100A6 FOS JUN EP300 
0.999999994402 4 FXYD2 FOS JUN EP300 
0.999999994402 4 STK40 FOS JUN EP300 
0.999999994402 4 HDAC7 FOS JUN EP300 

println的結果

class Via extends StringList { 

    final float score; 

    Via(float score) { 
     super(); 
     this.score = score; 
    } 

    boolean isEqual(Via via) { 
     if (this.size() == via.size()) { 
      for (int i=1; i<via.size();i++) { 
       if(!via.get(i).equals(this.get(i))){ 
        return false; 
       } 
      } 
     } else { 
      return false; 
     } 
     return true; 
    } 
} 

示例:

http://i.stack.imgur.com/0Xchu.png

+0

提供輸入文件的示例以更好地理解問題。 – rendon

+0

哦,對不起,我的壞。剛編輯它。它是通過我的txt的每一行創建Via stringLists。那部分工作正常。問題是我不能將每個StringsLists放在不同的ArrayList索引中。 – Almeida

+0

當你做println(listaVia)時,你看到了什麼,你的代碼看起來很好,它看起來好像一切都在索引0 – faljbour

回答

0

打印的ArrayList的形式println(listaVias)將導致列表打印如下:[item1, item2, item3]。從您的println示例的外觀,每個項目都會正確添加到列表中。

println(listaVias.get(2))會導致IndexOutOfBoundsException: Index:2, Size1for (String linha : lines)循環的第一次迭代拋出,因爲在那個階段,只有一個列表項目。

在填充列表後,您將能夠從索引獲取每個項目。