2017-02-19 291 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); 
    } 
}