【日常摘要】- map与函数式编程篇

  • 日常使用中,要定义一个map,常用的是一个都是常量值作为key或者value,但是不满足一些特殊的需求,比如将value需要通过参数形式返回不同的值。

  • 有以下场景:

	int num;
    Person person = new Person();
	String desc = "";
    switch (num) {
                case 1: 
                    desc = String.format("我要这么展示,name:%s",person.getName());
                    break;
                case 2: 
                    desc = String.format("我要这么展示,name:,age:%s",person.getName(),person.getAge());
                    break;
                default: 
                    break;
            }
  • 写起来很繁琐,那么可以通过map + 函数式的方式处理,那么上述代码可以调整为下面代码
    //调用
    public void method(){
        int num;
        Person person = new Person();
        String desc = PERSON_TYPE_MAP.get(num).apply(person);
    }
    
    
	//定义一个map跟Function组合使用的map
    private final ImmutableMap<Integer, Function<Person, String>> PERSON_TYPE_MAP = ImmutableMap.<Integer, Function<Person, String>>builder()
            .put(1, person -> String.format("我要这么展示,name:%s", person.getName()))
            .put(2, person -> String.format("我要这么展示,name:,age:%s",person.getName(),person.getAge())
            .build();
  • 简洁很多,需要调加新的对应关系,直接在map里面再put便可。
原文地址:https://www.cnblogs.com/lycsmzl/p/13516752.html