将文件读取到2d arraylist并将每个单词存储到数组列表中

时间:2011-12-19 11:55:06

标签: java arraylist multidimensional-array

我想要做的是,在一行中读取包含多个单词的文件,然后在2d arraylist中添加每个单词。这应该是[[凯文,凯文,凯文] [工作,工作,工作]]

下面的代码运作良好,但确实如此[[kevin,kevin,kevin,jobs,jobs,jobs]]

应该使用嵌套for来完成,但有人可以帮忙吗?

public void getReference() throws IOException
    {
        String line=null;

            connectRead("computer");
            //this is a method that reads a file in a format kevin kevin kevin kevin
            try
            {
                reference.add(new ArrayList<String>());
                while ((line=bufferedReader.readLine())!=null)
                {
                    st = new StringTokenizer(line); 

                    for ( int i = 0 ; i < st.countTokens() ; i++)
                    {       
                        reference.get(i).add(st.nextToken());
                        reference.get(i).add(st.nextToken());
                        reference.get(i).add(st.nextToken());
                        reference.get(i).add(st.nextToken());  
                    }

                }
                System.out.println(reference);

                bufferedReader.close();
            }
            catch ( IOException e )
            {
               System.out.println(e);
            }      

    }

文件中的文字看起来像这样

凯文美国黑客 wozniak美国黑客 工作美国黑客

1 个答案:

答案 0 :(得分:1)

你总是得到references.get(i),其中i = 0,所以无论什么时候读取新行,都会在第0个索引处从ArrayList开始插入令牌。

试试这个,但这个结构对我来说有点混乱。可能正在显示输入文件的结构有助于使代码更好。

public void getReference() throws IOException
{
    String line=null;

        connectRead("computer");
        //this is a method that reads a file in a format kevin kevin kevin kevin
        try
        {
            reference.add(new ArrayList<String>());
            int indexOfReferences =0 ;
            while ((line=bufferedReader.readLine())!=null)
            {
                st = new StringTokenizer(line); 

                for ( int i = 0 ; i < st.countTokens() ; i++)
                {       
                    reference.get(indexOfReferences).add(st.nextToken());
                }
               indexOfReferences++;

            }
            System.out.println(reference);

            bufferedReader.close();
        }
        catch ( IOException e )
        {
           System.out.println(e);
        }      

}