ArrayList里面的StringList使用处理

时间:2015-04-18 23:07:51

标签: java arraylist processing

我正在使用处理将txt文件中的数据输入到一组StringLists中。我现在想将StringLists逐个放入ArrayList。 但是,所有StringLists都会进入相同的ArrayList索引,即0

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

这是我的Via课程

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

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结果:

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

1 个答案:

答案 0 :(得分:0)

ArrayList表单中打印println(listaVias)将导致列表打印如下:[item1, item2, item3]。从println示例的外观中,每个项目都会正确添加到列表中。

println(listaVias.get(2))会导致IndexOutOfBoundsException: Index:2, Size1for (String linha : lines)循环的第一次迭代上被抛出,因为在那个阶段,存在列表中只有一个项目

在填充列表后,您将能够从索引中获取每个项目。