将Java 8代码转换为Java 6:Lambda表达式

时间:2014-12-11 03:51:08

标签: java java-8

我是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);
            }
        });
    }

2 个答案:

答案 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(),如果尚未访问,则将其父节点设置为当前节点,并将其添加到队列。