2017-02-19 329 views
-2

如何這段代碼轉換:從Java 8變換`Arrays.stream(...).collect(...)`到Java 7

private static Map<CustomObj<? extends CustomOtherObj>, CustomEnumeration> map; 
    if (map == null) { 
     map = Arrays.stream(CustomEnumeration.values()) 
      .collect(Collectors.toMap(x -> x.source, x -> x)); 
    } 

到Java 7的相同呢? (該Arrays.stream.collect(Collectors....)一部分。

基本上,上面的代碼把一些元件在地圖。

+0

您可以分享您嘗試將其轉換爲的解決方案,以及哪些解決方案不適用。 – Sandeep

+0

它在我的電腦上運行良好,但我的客戶端電腦運行java 7,目前他無法更新 –

回答

6

相當簡單

if (map == null) { 
    map = new HashMap<>(); 
    for(CustomEnumeration e : CustomEnumeration.values()) 
     map.put(e.source, e); 
} 
+0

完美,正是我需要的 –

1

map()拉姆達只是執行一個集合中的每個元素的動作。因此,它大致相當於一個foreach風格for循環。換言之,見下文。我一直x(不是一個偉大的變量名)來顯示的相似性。

if (null == map) { 
    map = new HashMap<CustomObj<? extends CustomOtherObj>, CustomEnumeration>(); 
    for (CustomEnumeration x : CustomEnumeration.values()) { 
     map.put(x.source, x); 
    } 
}