码迷,mamicode.com
首页 > 编程语言 > 详细

Java的Map的使用

时间:2014-07-16 18:15:56      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   使用   

建立一个Java project如下图所示:

在Test.java:

bubuko.com,布布扣
//没用map的判断逻辑
        int i = 1;//1,2,3
        switch (i) {
        case 1:
            new RankLevel();
            break;
        case 2:
            new RankNew();
            break;
        }
View Code

可以看到没有使用map的情况下使用了好多的case分支;

再看看有map的情况:

IStatusByFind.java:

bubuko.com,布布扣
package s_test.StatusByFind;

public interface IStatusByFind {
    public Object process(Object ...pram);
}
View Code

RankLevel.java:

bubuko.com,布布扣
package s_test.StatusByFind;

public class RankLevel implements IStatusByFind {

    @Override
    public Object process(Object... pram) {
        // TODO Auto-generated method stub
        System.out.println("hello:RankLevel"+pram);
        return null;
    }

}
View Code

RankNew.java:

bubuko.com,布布扣
package s_test.StatusByFind;

public class RankNew implements IStatusByFind {

    @Override
    public Object process(Object... pram) {
        // TODO Auto-generated method stub
        System.out.println("hellow:RankNew"+pram);
        return null;
    }

}
View Code

在Test.java里面:

bubuko.com,布布扣
//有用map的判断逻辑
        Map<Integer,IStatusByFind> map = new HashMap<Integer,IStatusByFind>();
        map.put(1,new RankLevel());
        map.put(2,new RankNew());
        int input = 2;//1,2,3
        if(map.containsKey(input)){
            map.get(input).process(1);
        }
View Code

可以看到我们不需要加入更多的分支,只是建多了分支的处理类;

其实struts2框架的核心也就这么点代码,(加载xml文件到内存,放到map里面,然后每个url就是一个key,类比于上面的int input = 2;//1,2,3,都对应有相应处理的action类比于上面的RankLevel、RankNew)

源码在那里?

here:

com.opensymphony.xwork2.config.impl

bubuko.com,布布扣

而且告诉你,几乎所有的MVC框架都是这种处理方式

附录,Test.java:

bubuko.com,布布扣
package s_test.StatusByFind;

import java.util.HashMap;
import java.util.Map;

public class Test {
    public static void main(String[] args) {
        //没用map的判断逻辑
        int i = 1;//1,2,3
        switch (i) {
        case 1:
            new RankLevel().process(1);
            break;
        case 2:
            new RankNew().process(1);
            break;
        }
        //有用map的判断逻辑
        Map<Integer,IStatusByFind> map = new HashMap<Integer,IStatusByFind>();
        map.put(1,new RankLevel());
        map.put(2,new RankNew());
        int input = 2;//1,2,3
        if(map.containsKey(input)){
            map.get(input).process(1);
        }
        
    }
}
View Code

运行结果:

bubuko.com,布布扣
hello:RankLevel[Ljava.lang.Object;@1888759
hellow:RankNew[Ljava.lang.Object;@e53108
View Code

 

 

 

 

 

 

 

 

 

 

 

 

Java的Map的使用,布布扣,bubuko.com

Java的Map的使用

标签:style   blog   http   java   color   使用   

原文地址:http://www.cnblogs.com/super-d2/p/3846445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!