【问题标题】:Transform `Arrays.stream(…).collect(…)` from Java 8 to Java 7将 `Arrays.stream(...).collect(...)` 从 Java 8 转换为 Java 7
【发布时间】:2017-02-19 17:40:53
【问题描述】:

如何转换这段代码:

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....) 部分。

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

【问题讨论】:

  • 您能否分享您尝试将其转换为的解决方案以及其中不起作用的解决方案。
  • 它在我的电脑上运行良好,但我的客户端电脑运行的是 java 7,他目前无法更新

标签: java java-8 java-7


【解决方案1】:

很简单

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

【讨论】:

  • 完美,正是我所需要的
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2016-12-14
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多