首页  

函数式与非函数式,你来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<String, String> map = new HashMap<String, String>();
		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<String, String> map) {
		// List<String> 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<String, String> 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<String, String> 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句话