gpt4 book ai didi

java - 用 lambda 替换 for 循环

转载 作者:行者123 更新时间:2023-12-01 09:55:14 25 4
gpt4 key购买 nike

我有以下代码:

@Override
public String parsePrice(Document document) {
Elements metaElements = document.getElementsByTag("meta");
for (Element tag : metaElements) {
String content = tag.attr("content");
String item = tag.attr("itemprop");

if ("price".equals(item)) {
return content.equals("0") ? "Free" : content;
}
}
return "Information not available";
}

它将返回类似“7,49$”的价格。
我想用 java 8 功能替换此代码。我是流的新手,但尝试过:
metaElements.stream().filter(tag -> "price".equals(tag.attr("itemprop")))
.findFirst().orElse(null);

但它返回 <meta itemprop="price" content="7,49$">
我不能像这样过滤(缺少 return 语句):
metaElements.stream().filter(tag -> {
String content = tag.attr("content");
String item = tag.attr("itemprop");

if ("price".equals(item)) {
return content.equals("0") ? "Free" : content;
}
}).findFirst().orElse(null);

如何解决?

最佳答案

您在这里的尝试很接近:

metaElements.stream()
.filter(tag -> "price".equals(tag.attr("itemprop")))
.findFirst()
.orElse(null);

你只需要 map + orElsefindFirst例如
return metaElements.stream()
.filter(tag -> "price".equals(tag.attr("itemprop")))
.findFirst()
.map(tag -> tag.attr("content").equals("0") ?
"Free" : tag.attr("content"))
.orElse("Information not available");

关于java - 用 lambda 替换 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62204234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com