我想做的是,读取一行中包含多个单词的文件,然后将每个单词添加到2d arraylist中。应该是[[kevin,kevin,kevin] [jobs,jobs,jobs]]
下面的代码很好用,但是确实是这样[[kevin,kevin,kevin,jobs,jobs,jobs]]
应该通过使用嵌套来完成,但是有人可以帮忙吗?
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);
}
}
文件中的文本看起来像这样
凯文·美国黑客
沃兹尼亚克美国黑客
乔布斯美国黑客
最佳答案
您总是会得到references.get(i),其中i = 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);
}
}
关于java - 将文件读取到2D arraylist并将每个单词存储在数组列表中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8560963/