gpt4 book ai didi

Java 8 stream api 控制输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:00 25 4
gpt4 key购买 nike

我有以下代码。

List<String> parseAttribValueByTag(String tag, String attrib, List<String> attribName) throws IOException {

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

Document doc = Jsoup.connect(url).get();
Elements inputs = doc.select(tag + "[" + attrib + "]");
for (String item : attribName) {
System.out.println(inputs.stream()
.filter(input -> input.attr("name").contains("__VIEWSTATE"))
.findFirst());
}
return keys;
}

它给了我以下输出

Optional[<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="5ue/NxnSLQ2akzQo5R8wBEZ,,."

我想控制输出所以它只给我 __VIEWSTATE "5ue/NxnSLQ2akzQo5R8wBEZ,,."

我试过使用 .map(input -> input.attr("value"))它给了我Optional[5ue/NxnSLQ2akzQo5R8wBEZ,,.

但是当我添加额外的 .map(input -> input.attr("name")) 时还给我名称,我收到以下错误“无法解析方法'attr(java.lang.String)'”。我在代码中做错了什么?有解决办法吗?

最佳答案

如果你添加一个.map(input -> input.attr("value")) , 你转换你的 StreamStream<String> (假设 attr 返回一个 String ),并且 String没有 attr方法,所以第二个map调用未通过编译(因此编译错误 - Cannot resolve method 'attr(java.lang.String)')。

您可以使用单个 map获得这两个属性的操作。例如:

    System.out.println(inputs.stream()
.filter(input -> input.attr("name").contains("__VIEWSTATE"))
.map(input -> input.attr("name") + " " + input.attr("value"))
.findFirst());

关于Java 8 stream api 控制输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37204943/

25 4 0