java map 替换_java学习:用Map替代众多的if-else

(20160329add)简略地说:

if(A){

Ahandler.handle(a);

} else if (B){

Bhandler.handle(b);

} else if (C){

Chandler.handle(c);

}

可以改写成:

//初始化map

Map map;

map.put(A,Ahandler);

map.put(B,Bhandler);

map.put(C,Chandler);

//处理

map.get(X).handle(x);

#2014.11.13#

问题情景:根据标签对字符串做出相应的处理,输入格式:{标签}{目标字符串}

大写化 String1

小写化 String2

逆序 String3

....

functionN StringN

通常用if else的实现方式大致如下:

while(读取行) {

将每一行的输入拆分,然后存入String function,String str;

if ( function.equals("大写化")){

//调用函数处理str

}else if ( function.equals("小写化")){

//调用函数处理str

}else if(){

}

...

}

这样写很不痛快而且代码难看,使用Map的映射能力可以解决这个问题,基本思路是使用Map将和相应的建立映射关系,这样的话Map.get()就是那个类了,接下来调用方法即可解决Map.get().getResult(str);

实现方式如下:

首先定义一个接口

public interface Type {

String getResult (String str);

}

接下来继承这个接口实现各种功能类

public class functionA implements Type{

@Override

public String getResult ( String str ){

//A函数的功能

}

}

.....同样的functionB,functionC ......

以上是一些准备工作,一开始的 if-else 部分转化如下:

Map map= new HashMap();

map.put("大写化",new functionA());

map.put("小写化",new functionB());

map.put("逆序", new functionC());

.......

while(读取行){

将每一行的输入拆分,然后存入String function,String str;

map.get( function ).getResult( str );

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值