2014-12-11 66 views
1

我是Lambda表達式的新手,我有一個Java 1.6。如果有人可以解釋並協助將以下代碼轉換爲Java 1.6。這將是非常有益的。將Java 8代碼轉換爲Java 6:Lamba表達式

// 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

Java 6沒有lambda表達式。並且不再支持(2013年2月是22個月前)。 Java 7支持於2015年4月結束。那麼,您希望我們準確解釋什麼? – 2014-12-11 03:55:06

+4

你有什麼嘗試?什麼讓你特別迷惑lambdas?這是Stream/Lambda使用的相對直接,你有沒有看過? – Jetti 2014-12-11 03:55:37

回答

1

第一個功能看起來通過adjacencyList值(這是很可能,地圖,儘管混亂名),呼籲每個人.getEdgeCount,加起來所有的數字,並返回總和。

第二個函數從隊列中取出節點,遍歷邊,得到每個邊的.toNode(),如果尚未訪問,則將其父設置爲當前節點,並將其添加到隊列中。

2

則存在反向移植在https://sourceforge.net/projects/streamsupport/

streamsupport到Java 6/7流支持一種開源項目是Java 8 java.util.function(功能接口)和java.util的反向移植用於Java 6或7的用戶的.stream(流)API補充了Java 6中不存在的選定的java.util.concurrent新增內容。