0

我正在研究一种 Java 方法,该方法将在永恒的 for 循环中逐行解析文本。

如您所见,我正在将 a 的内容分配给bufferReader列表

BufferedReader br = new BufferedReader(new FileReader("C:/feed.txt"));
            String strLine;
            ArrayList list = new ArrayList();    
while ((strLine = br.readLine()) != null) {
                list.add(strLine);

这项工作完美无缺,feed.txt内容完全分配给arrayListwith 18238 行。

但是当我尝试在for循环中使用和处理带有迭代器的列表内容时(以下代码),出现了问题:

Iterator itr;  
for (itr = list.iterator(); itr.hasNext();) { 
    String str = itr.next().toString();
}

循环中的指令(业务流程)运行良好,直到程序停止迭代时的行号 5175。这是与迭代器相关的问题。

我认为这是关于迭代器的,因为这一行没有什么特别之处,即使删除它也是如此。问题依然存在。

迭代器有限制吗?我怎样才能把它升起来?

我正在尝试解析具有此行数的文件,但我应该在我的项目中开发一个永恒的永无止境的循环,一直接收行。

你能帮我吗 ?

4

2 回答 2

0

你问“我如何结合”?这是一个简单的例子。请注意,它不使用迭代器 - 因此您将能够看到您可以对输入文件中的所有行执行某些操作。它并没有真正回答您的问题,但它应该可以帮助您缩小问题所在。

BufferedReader br = new BufferedReader(new FileReader("C:/feed.txt"));
String strLine, str;
int numLines;
ArrayList list = new ArrayList();    
numLines = 0;
while ((strLine = br.readLine()) != null) {
    list.add(strLine);
    System.out.println(list.get(numLines));
    numLines++;
    // do whatever you were going to do with the iterator here
    str = strLine.toString();
}

System.out.printf("Read in %d lines; the last line read is \n%s\n", numLines, list.get(numLines-1));

虽然这并不是您所要求的,但当您运行此代码并查看它如何失败时,您将更接近解决您提出的问题。

于 2013-03-05T13:16:44.423 回答
0

这里有几件事:

首先,使用

List<String> list = new ArrayList<String>();

然后你可以迭代使用

for (String str : list) {
  // do something
}

这能解决问题吗?

于 2013-03-05T10:59:27.707 回答