ArrayList内部的StringList使用处理

StringList inside ArrayList using 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;
  }
}

这是我的class

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

打印结果:

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

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

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

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