我正在构建遍历一百万行左右的递归函数,我在执行期间从此函数中获取了stackOverFlow。
protected String[] getConnectedCities(String line) {
return line.trim().toLowerCase().replace(DELIMITER + " ", DELIMITER)
.split(DELIMITER);
}
这是完整的代码:
protected final Map<String, City> processLine(
final Map<String, City> dataMap) {
try {
String line = "";
if ((line = bReader.readLine()) == null) {
return dataMap;
}
// Check if direct relation can be found
String connectedCities[] = parseLine(line);
line = null;
saveConnection(dataMap, connectedCities);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return processLine(dataMap);
}
我不确定我做错了什么,我认为它与String行有关,但我不太确定它是什么。
感谢。
答案 0 :(得分:1)
你做的最后一件事,你正在调用processLine agan。这将具有与文件中的行一样多的重复级别,直到上面的return语句失效。这在技术上是尾递归,但Java可能不理解。