当前位置: 代码迷 >> 综合 >> java8 lambda 替代if-else
  详细解决方案

java8 lambda 替代if-else

热度:90   发布时间:2024-02-01 09:37:23.0

                                java8 lambda 替代if-else

1、普通 if语句

     enum Type {APPLE("apple"),ORANGE("orange"),PEAR("pear"),OTHER("other");private final String type;Type(String type) {this.type = type;}public String getVal() {return type;}}private void printFruitType(String type) {if (Type.APPLE.getVal().equals(type)) {System.out.println(Type.APPLE.getVal());}if (Type.ORANGE.getVal().equals(type)) {System.out.println(Type.ORANGE.getVal());}if (Type.PEAR.getVal().equals(type)) {System.out.println(Type.PEAR.getVal());}if (Type.OTHER.getVal().equals(type)) {System.out.println(Type.OTHER.getVal());}}@Testpublic void fruit() {List<String> fruits = Lists.newArrayList("orange", "pear", "apple", "other");// 回去随机的水果类型int index = (int) (Math.random() * 4);printFruitType(fruits.get(index));}

除了使用switch case语句之外还有lambda,下面来看lambda具体使用方法:

2、简单的lambda应用

    enum Type {APPLE("apple"),ORANGE("orange"),PEAR("pear"),OTHER("other");private final String type;Type(String type) {this.type = type;}public String getVal() {return type;}}/*** 定义一个lambda 函数*/@FunctionalInterfaceinterface Handler {void handler();}/*** 注册水果类型和lambda方法* @return Map*/private Map<Type, Handler> register() {return new HashMap<Type, Handler>() {{putIfAbsent(Type.PEAR, () -> System.out.println("pear"));putIfAbsent(Type.ORANGE, () -> System.out.println("orange"));putIfAbsent(Type.APPLE, () -> System.out.println("apple"));putIfAbsent(Type.OTHER, () -> System.out.println("other"));}};}@Testpublic void functionPrint(){Map<Type, Handler> handlerMap = register();List<String> fruits = Lists.newArrayList("orange", "pear", "apple", "other");// 获取随机的水果类型int index = (int) (Math.random() * 4);String type = fruits.get(index);System.out.println(type);handlerMap.get(Type.valueOf(type.toUpperCase()));}