将 `Arrays.stream(…).collect(…)` 从 Java 8 转换为 Java 7
Transform `Arrays.stream(…).collect(…)` from Java 8 to 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));
}
变成Java7相当于? (Arrays.stream.collect(Collectors....)
部分。
基本上,上面的代码将一些元素放入地图中。
很简单
if (map == null) {
map = new HashMap<>();
for(CustomEnumeration e : CustomEnumeration.values())
map.put(e.source, e);
}
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);
}
}
如何改造这段代码:
private static Map<CustomObj<? extends CustomOtherObj>, CustomEnumeration> map;
if (map == null) {
map = Arrays.stream(CustomEnumeration.values())
.collect(Collectors.toMap(x -> x.source, x -> x));
}
变成Java7相当于? (Arrays.stream.collect(Collectors....)
部分。
基本上,上面的代码将一些元素放入地图中。
很简单
if (map == null) {
map = new HashMap<>();
for(CustomEnumeration e : CustomEnumeration.values())
map.put(e.source, e);
}
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);
}
}