java学习:用Map替代众多的if-else
2015-09-13 19:04
453 查看
(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<String,Type> map= new HashMap<String,Type>();
map.put("大写化",new functionA());
map.put("小写化",new functionB());
map.put("逆序", new functionC());
.......
while(读取行){
将每一行的输入拆分,然后存入String function,String str;
map.get( function ).getResult( str );
}
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<String,Type> map= new HashMap<String,Type>();
map.put("大写化",new functionA());
map.put("小写化",new functionB());
map.put("逆序", new functionC());
.......
while(读取行){
将每一行的输入拆分,然后存入String function,String str;
map.get( function ).getResult( str );
}
相关文章推荐
- 我的java实验
- Java记录 -30- 包装类
- Java线程池使用说明
- java集合框架之java HashMap代码解析
- Java中HashMap实现原理初探
- Java学习笔记——cmd对java的编译以及cmd对cpp的编译
- java多线程
- Java并发编程:线程池的使用
- 解决在windows的eclipse上面运行WordCount程序出现的一系列问题详解
- java编程---万年历
- java String分类trim,substring,replaceAll,indexOf使用功能
- java中接口有什么作用?请创建一个接口(举例)
- java程序性能优化第三章
- java__泛型
- Spring MVC @ResponseBody 提示 406 The resource identified by this request……
- Java记录 -28- String Literals字面值
- apktool + eclipse 调试smali
- java-使用SImpleDateFormat格式化时间输出
- Java记录 -27- String的intern方法
- springMVC是线程安全的吗?