将递归修改为循环 已经搞定了,使用一个stack实现 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请优化,下列代码供参考:private void parseField(JsoupParser parser, String target) throws Exception { if (StringUtils.isEmpty(target)) { return; } List<Field> fields = processor.getPageRule(target).getFields(); Stack<List<Field>> fieldStack = new Stack<List<Field>>(); Stack<String> targetStack = new Stack<String>(); Stack<List<String>> valueStack = new Stack<List<String>>(); Stack<JsoupParser> parserStack = new Stack<JsoupParser>(); fieldStack.push(fields); parserStack.push(parser); while (!fieldStack.isEmpty()) { fields = fieldStack.pop(); for (Field field : fields) { List<String> values = getValues(parser, field.getFieldValue()); System.out.println(field.getFieldName() + "\t" + values); if (StringUtils.isNotEmpty(field.getTarget())) { valueStack.push(values); targetStack.push(target); target = field.getTarget(); } } while (!valueStack.isEmpty()) { List<String> values = valueStack.pop(); for (String url : values) { parser = new JsoupParser(url, userAgent); fields = processor.getPageRule(target).getFields(); parserStack.push(parser); fieldStack.push(fields); } } parser = parserStack.pop(); }} 一道关于多线程的问题,求解答 求正则表达式 一年经验java期望薪水应该要多少 ??????? 关于强制类型转换的一个问题 不懂兵法的皇帝和不会打仗的将军 线程同步问题 MS SQL的插入语句(JAVA中)(可以多补分,只要能解决) 有没有地方下载中文或英文的Visual Age for Java 3.5的教程?谢谢! 新手求解 ResultSet rs=pstmt.executeQuery();编译过了但是执行时出错是为啥 JAVA导Excel到Mysql传参中文乱码 抛出异常有什么用?
请优化,下列代码供参考:private void parseField(JsoupParser parser, String target) throws Exception {
if (StringUtils.isEmpty(target)) {
return;
}
List<Field> fields = processor.getPageRule(target).getFields();
Stack<List<Field>> fieldStack = new Stack<List<Field>>();
Stack<String> targetStack = new Stack<String>();
Stack<List<String>> valueStack = new Stack<List<String>>();
Stack<JsoupParser> parserStack = new Stack<JsoupParser>();
fieldStack.push(fields);
parserStack.push(parser);
while (!fieldStack.isEmpty()) {
fields = fieldStack.pop();
for (Field field : fields) {
List<String> values = getValues(parser, field.getFieldValue());
System.out.println(field.getFieldName() + "\t" + values);
if (StringUtils.isNotEmpty(field.getTarget())) {
valueStack.push(values);
targetStack.push(target);
target = field.getTarget();
}
}
while (!valueStack.isEmpty()) {
List<String> values = valueStack.pop();
for (String url : values) {
parser = new JsoupParser(url, userAgent);
fields = processor.getPageRule(target).getFields();
parserStack.push(parser);
fieldStack.push(fields);
}
}
parser = parserStack.pop();
}
}