如何将其转换为Java 1.6?方法.stream()在Java 1.6中无法使用。
final Optional<Entry<String, String>> mapping = cfg.getTypeMapping()
.entrySet()
.stream()
.filter(e -> e.getKey().startsWith(jsonType + "|"))
.findFirst();
答案 0 :(得分:6)
让我们快速浏览一下
:mapping = cfg.getTypeMapping()
.entrySet()
.stream()
.filter(e -> e.getKey().startsWith(jsonType + "|"))
.findFirst();
以上代码可能会获取某种映射,获取其条目,然后对其进行迭代,以停止在startsWith(jsonType + "|")
的第一个键上。
仅此而已,可以很容易地用老式的循环代码重写。
但是实际的挑战是:final Optional<Entry<String, String>>
:在Java 1.8中将 Optional 类添加到Java。
没有没有等效项。因此,您的全部代码都可以不能针对Java 1.6进行重写
您可以做的最接近的事情:编写该循环代码,如果循环找到了东西,则返回该结果,否则返回null。或者,您可以执行以下操作:
List<Entry<String, String>> firstMapping = Collections.emptyList();
for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
if (entry.getKey().startsWith(jsonType + "|")) {
firstMapping = Collections.singletonList(entry);
break;
}
}
return firstMapping;
或者,考虑到OP考虑使用com.google.common.base.Optional
的事实,您可以执行以下操作:
for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
if (entry.getKey().startsWith(jsonType + "|")) {
return Optional.of(entry);
}
}
return Optional.absent();
相反。
当然,请始终记住:Java 6是。人们应该避免积极地进行开发,尤其是当人们不得不依靠他人来进行实际的反向移植工作时。
(免责声明:我的代码示例是作为详细的伪代码启发,我没有通过编译器运行它,它可能包含错字等)
答案 1 :(得分:1)
流几乎总是可以转换为循环。您可以创建一个for循环,循环访问条目集中的每个条目,检查其是否符合filter
中的条件。如果是这样,请立即中断循环
Entry<String, String> result = null;
for (Entry<String, String> entry : cfg.getTypeMapping().entrySet()) {
if (entry.getKey().startsWith(jsonType + "|")) {
result = entry;
break;
}
}
请注意,我使用null代替“ Optional
”来表示“未找到”值。