将`Arrays.stream(...).collect(...)`从Java 8转换为Java 7

时间:2017-02-19 17:40:53

标签: java java-8 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....)部分。

基本上,上面的代码将一些元素放在地图中。

2 个答案:

答案 0 :(得分:7)

非常简单

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

答案 1 :(得分:1)

map() lambda只对集合中的每个元素执行操作。因此,它大致相当于foreach - 样式for循环。换句话说,见下文。我保留x(不是一个很好的变量名称)来显示相似性。

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