我是Lambda表达的新手,我有一个Java 1.6。如果有人可以解释并协助将以下代码转换为Java 1.6。这将非常有帮助。
// 1st Code
public int getEdgeCount()
{
return adjacencyList.values()
.stream()
.mapToInt(Node::getEdgeCount)
.sum();
}
// 2nd Code
while (!queue.isEmpty()) {
Node<T> first = queue.remove();
first.setVisited(true);
first.edges().forEach(edge -> {
Node<T> neighbour = edge.toNode();
if (!neighbour.isVisited()) {
neighbour.setParent(first);
queue.add(neighbour);
}
});
}
答案 0 :(得分:2)
有一个开源项目在https://sourceforge.net/projects/streamsupport/
向Java 6/7反向移植流支持streamsupport是Java 8 java.util.function(功能接口)和java.util.stream(streams)API的后端,适用于Java 6或7的用户,并补充了来自java.util.concurrent的选定内容,其中没有#&# 39; t存在于Java 6中。
答案 1 :(得分:1)
第一个函数查看adjacencyList
的值(可能是地图,尽管名称令人困惑),在每个值上调用.getEdgeCount
,将所有数字相加,然后返回总和
第二个函数,从队列中获取节点,遍历边缘,获取每个边缘的.toNode()
,如果尚未访问,则将其父节点设置为当前节点,并将其添加到队列。