首页 > 代码库 > Java的Map的使用
Java的Map的使用
建立一个Java project如下图所示:
在Test.java:
//没用map的判断逻辑 int i = 1;//1,2,3 switch (i) { case 1: new RankLevel(); break; case 2: new RankNew(); break; }
可以看到没有使用map的情况下使用了好多的case分支;
再看看有map的情况:
IStatusByFind.java:
package s_test.StatusByFind;public interface IStatusByFind { public Object process(Object ...pram);}
RankLevel.java:
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; }}
RankNew.java:
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; }}
在Test.java里面:
//有用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); }
可以看到我们不需要加入更多的分支,只是建多了分支的处理类;
其实struts2框架的核心也就这么点代码,(加载xml文件到内存,放到map里面,然后每个url就是一个key,类比于上面的int input = 2;//1,2,3,都对应有相应处理的action类比于上面的RankLevel、RankNew)
源码在那里?
here:
com.opensymphony.xwork2.config.impl
而且告诉你,几乎所有的MVC框架都是这种处理方式
附录,Test.java:
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); } }}
运行结果:
hello:RankLevel[Ljava.lang.Object;@1888759hellow:RankNew[Ljava.lang.Object;@e53108
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。