gpt4 book ai didi

Java 8 Lambdas - 相当于 c# OfType

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:34 24 4
gpt4 key购买 nike

我现在正在学习 Java 8 的新功能,在 C# 世界里呆了 4 年之后,所以 lambda 对我来说是最重要的。我现在正在努力寻找 C# 的“OfType”方法的等效方法。

我有一个 List myNodes ,我想从中得到一个 List ,其中 Node 是一个接口(interface),而 SpecificNode 正在实现它。

在 C# 中会是

IList<INode> myNodes = new List<INodes>(){new SpecificNode(), new OtherNode()}
IList<SpecificNode> specificNodes = myNodes.OfType<SpecificNode>()

最佳答案

.OfType<T>() 在 Java 中没有匹配方法,但您可以使用 Java8 的过滤功能:

IList<INode> myNodes = new ArrayList<INode>();
myNodes.add(new SpecificNode());
myNodes.add(new OtherNode());

List<SpecificNode> filteredList = myNodes.stream()
.filter(x -> x instanceof SpecificNode)
.map(n -> (SpecificNode) n)
.collect(Collectors.toList());

如果你想获得显式转换,你可以这样做:

List<SpecificNode> filteredList = myNodes.stream()
.filter(SpecificNode.class::isInstance)
.map(SpecificNode.class::cast)
.collect(Collectors.toList());

关于Java 8 Lambdas - 相当于 c# OfType,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25077270/

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