函数式与非函数式,你来pick
所属分类 java
浏览量 1414
两种语法 函数式 与 非函数式 实现同样的功能
只show代码,不发表任何意见 ,哈哈哈
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.stream.Stream;
public class PickMe {
public static void main(String[] args) throws Exception {
Map map = new HashMap();
map.put("a", "1");
map.put("b", "2");
// 非函数式版本
Properties prop = map2prop(map);
System.out.println(prop);
// 函数式版本
prop = map2prop_f1(map);
System.out.println(prop);
// 函数式 reduce 高逼格版本
prop = map2prop_f2(map);
System.out.println(prop);
}
// 非函数式版本
private static Properties map2prop(Map map) {
// List keys = Stream.of("a", "b",
// "c").collect(Collectors.toList());
String[] keys = { "a", "b", "c" };
String value = null;
Properties prop = new Properties();
for (String item : keys) {
value = map.get(item);
if (value == null) {
continue;
}
prop.setProperty(item, value);
}
return prop;
}
// 函数式版本1
private static Properties map2prop_f1(Map map) {
Properties prop = new Properties();
Stream.of("a", "b", "c").forEach(e -> {
if (map.containsKey(e)) {
prop.setProperty(e, map.get(e));
}
});
return prop;
}
// 函数式版本2 reduce 高逼格版本
private static Properties map2prop_f2(Map map) {
return Stream.of("a", "b", "c").reduce(new Properties(), (p, s) -> {
Optional.ofNullable(map.get(s)).ifPresent(v -> p.put(s, v));
return p;
} , (p1, p2) -> {
p1.putAll(p2);
return p1;
});
}
}
lambda的优雅用法
lambda使用说明
java8 Lambda 实例
JAVA8 stream 集合处理
上一篇
下一篇
个人网站监控实战
美股熔断记录
clickhouse简介
适合练手的c/c++开源项目
职场生存法则和职业发展建议
道尽人性的25句话