将ArrayLists拆分为多个ArrayLists

时间:2014-06-26 23:58:26

标签: java arrays file text arraylist

我想知道如何将以下数据拆分成多个列表。这是我的输入(来自文本文件,此处重新创建的示例):

aaaa bbbb cccc,ccc,cccc

aaaa-- bbbb

aaaa bbbb cccc-

aaaa bbbb cccc,ccc

aaaa-

aaaa bbbb ccc,cccc,cccc

分隔文本的每个部分是一个空白区域。我需要创建的代码应该创建三个列表,由文本文件中每个条目的a,b和c组组成,每个条目相对于每一行,而忽略任何带有" - "的行。所以,我的3个数组应按如下方式填充:

Array1: aaaa, aaaa, aaaa
Array2: bbbb, bbbb, bbbb
Array3: (cccc,ccc,cccc),(cccc,ccc),(ccc,cccc,cccc)

添加了括号以显示第三个数组应包含所有列出的c值 a,b和c都包含从文本文件导入的字符串。到目前为止,这是我的代码:

import java.util.*;
import java.io.*;

public class SEED{

public static void main (String [] args){

    try{

        BufferedReader in = new BufferedReader(new FileReader("Curated.txt"));
        String temp;
        String dash = "-";
        int x = 0;
        List<String> list = new ArrayList<String>();
        List<String> names = new ArrayList<String>();
        List<String> syn = new ArrayList<String>();
        List<String> id = new ArrayList<String>();


        while((temp = in.readLine()) != null){

            if(!(temp.contains(dash))){

                list.add(temp);

                if(temp.contains(" ")){

                    String [] temp2 = temp.split(" ");
                    names.add(temp2[0]);
                    syn.add(temp2[1]);
                    id.add(temp2[2]);

                }else{

                    System.out.println(temp);

                }//Close if

                System.out.println(names.get(x));
                System.out.println(syn.get(x));
                System.out.println(id.get(x));

            x++;


            }//Close if


        }//Close while

    }catch (Exception e){

e.printStackTrace();
        System.exit(99);

    }//Close try

}//Close main

}//Close class

但我的输出始终是:没有。如何将这些值正确保存到3个独立的数组或数组列表?

2 个答案:

答案 0 :(得分:1)

您正在引用 list.get(x),但您的 x ++ list.add 将不会同步你读了一条没有破折号的线。所以(x)将不是正确的参考。

你为什么这样做:

String [] temp2 = list.get(x).split(" ");

而不是:

String [] temp2 = temp.split(" ");

修改

尝试:

if(!(temp.contains(dash))){

            list.add(temp);

            if(temp.contains(" ")){

                String [] temp2 = temp.split(" ");
                names.add(temp2[0]);
                syn.add(temp2[1]);
                id.add(temp2[2]);
            }else{

                System.out.println(temp);

            }//Close if

        }//Close if

for(int x = 0; x < names.size(); x++) {

            System.out.println(names.get(x));
            System.out.println(syn.get(x));
            System.out.println(id.get(x));
}

答案 1 :(得分:0)

可能会抛出一个例外,而你却忽略了它。

将您的捕获更改为

}catch (Exception e){
    e.printStackTrace();
    System.exit(99);

}//Close try