当前位置:   article > 正文

Java 表驱动(map)函数替代if…else代码

java 表驱动

Map + 函数式接口方法替代解决很多if…else这种判断。

什么是表驱动法?

是一种编程模式,从表里查找信息而不使用逻辑语句(if 和case)。事实上,凡是能通过逻辑语句来选择的事物,都可以通过查表来选择。对简单的情况而言,使用逻辑语句更为容易和直白,但随着逻辑链的越来越复杂,查表法也就愈发显得更具有吸引力。

使用总则

适当的情况下,采用表驱动法,所生成的代码会比复杂的逻辑代码更简单,更容易修改,而且效率更高。

表驱动函数(Table-Driven Function)是一种常见的编程技巧,它可以将一系列的条件判断语句转化为一个基于表格的查找操作,从而提高代码的可读性和可维护性。在JAVA中,我们可以使用不同的数据结构来实现表驱动函数。除了数组之外,还可以使用Map、List或者其他数据结构。选择不同的数据结构,取决于具体的应用场景和需求。

表驱动函数的主要优点是它可以使代码更加简洁、易于理解和维护。使用表驱动函数,可以将大量的条件判断语句转化为一个简单的表格,从而减少代码量,降低出错的风险,并且使代码更加易于扩展和修改。需要注意的是,使用表驱动函数并不一定总是比使用条件判断语句更好,这取决于具体的情况。在某些情况下,使用条件判断语句可能更加直观和简单。因此,我们需要根据实际情况选择最适合的编程技巧。

用Function 实现函数

Function 只能是一个入参  一个出参

get 方法如果取不到会抛异常

getOrDefault  取不到会返回默认值

apply 相当于执行 map 里的 value 函数

如果需要两个入参 一个出参  可以用 BiFunction

如果需要两个入参 不需要返回参数 也就是方法返回类型为 void 可以用 BiConsumer

还有很多不同个数的出入参类型的函数:

基本类型对应的包装类表如下:

基本类型

引用类型

boolean

Boolean

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

简单示例代码:

  1. import java.util.HashMap;
  2. import java.util.function.Function;
  3. public class Demo {
  4. public static void main(String[] args) {
  5. String aResult = dataMappings.getOrDefault("0", defaultMapping).apply("a-result");
  6. System.out.println(aResult);
  7. String bResult = dataMappings.get("1").apply("b-result");
  8. System.out.println(bResult);
  9. String cResult = dataMappings.getOrDefault("3", defaultMapping).apply("c-result");
  10. System.out.println(cResult);
  11. String defaultResult = dataMappings.getOrDefault("100", defaultMapping).apply("default-result");
  12. System.out.println(defaultResult);
  13. }
  14. static HashMap<String, Function<String, String>> dataMappings = new HashMap<String, Function<String, String>>() {
  15. {
  16. put("0", (String param) -> {
  17. return param;
  18. });
  19. put("1", (String param) -> {
  20. return param;
  21. });
  22. put("2", (String param) -> {
  23. return param;
  24. });
  25. put("3", (String param) -> {
  26. return deal(param);
  27. });
  28. put("4", (String param) -> {
  29. return deal(param);
  30. });
  31. }
  32. };
  33. static Function<String, String> defaultMapping = new Function<String, String>() {
  34. @Override
  35. public String apply(String s) {
  36. return "default";
  37. }
  38. };
  39. static String deal(String param) {
  40. return "after deal:" + param;
  41. }
  42. }

运行结果:

a-result

b-result

after deal:c-result

default

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号