use*_*714 2 java lambda java-6 java-8
有人可以帮助并向我解释如何将以下Java 1.8代码转换为Java 1.6吗?
private java.util.Optional<Edge<T>> findEdge(Node<T> node)
{
return edges.stream()
.filter(edge -> edge.isBetween(this, node))
.findFirst();
}
public boolean removeEdge(Node<T> node)
{
*java.util.Optional<Edge<T>> optional = findEdge(node);*
if (optional.isPresent())
{
return edges.remove(optional.get());
}
return false;
}
public boolean hasEdge(Node<T> node)
{
return findEdge(node).*isPresent();*
}
Run Code Online (Sandbox Code Playgroud)
假设edges是类型Collection<Edge>:
private Edge<T> findEdge(Node<T> node)
{
for (Edge edge : edges) {
if (edge.isBetween(this, node)) {
return edge;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
您必须迭代,edges直到找到与筛选条件匹配的edge.isBetween(this, node)边并返回该边.如果找不到,则返回null,因为您没有OptionalJava 6.
其他方法甚至更简单 - 因为你没有Optional包装你的方法Edge,你只需检查返回的值findEdge是否为null.
public boolean removeEdge(Node<T> node)
{
Edge<T> e = findEdge(node);
if (e != null)
{
return edges.remove(e);
}
return false;
}
public boolean hasEdge(Node<T> node)
{
return findEdge(node) != null;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4999 次 |
| 最近记录: |