Java 8 流 api 控制输出
Java 8 stream api control output
我有以下代码。
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"))
,则将 Stream
转换为 Stream<String>
(假设 attr
returns 为 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());
我有以下代码。
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"))
,则将 Stream
转换为 Stream<String>
(假设 attr
returns 为 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());