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;@1888759
hellow:RankNew[Ljava.lang.Object;@e53108

Java的Map的使用

时间: 2025-01-14 09:48:21

Java的Map的使用的相关文章

mybatis异常:Could not find result map java.util.Map 问题分析及解决

错误写法 <select id="queryXXXCount" resultMap="java.util.Map" > mybatis报出的异常日志: org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.util.Map at org.apache.ibatis.builder.MapperBuilderAssistant.setStat

Java中Map接口的遍历

package Test4; import java.util.Collection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set; import org.junit.Test; public class MapBianLi { /* * 如何遍历Map * Set keySet()-->遍历Key * Collection values()-->遍历va

JAVA集合------Map (HashMap实现)

package java_util_map; import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class MapTest01 { public static void main(String[] args) { /*  * Map是一个接口,HashMap是Map的一个实现类  

Java遍历Map集合方法

package testMap; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; /**  * 循环遍历Map集合  *   * @author Administrator  *   */ pub

细说java中Map的两种迭代方式

以前对java中迭代方式总是迷迷糊糊的,今天总算弄懂了,特意的总结了一下,基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代访问)Collection集合中的元素,Iterator也称为迭代器.它仅仅只有三个方法:hasNext(),next()和remove() hasNext():如果仍有元素可以迭代,则返回 true.(换句话说,如果 next 返回了元素而不是 抛出异常,则返回 true). next():返回迭代的下一个元素. re

java中map集合的迭代

import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TestMap { public static void main(String[] args) { Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "a"); map.put(2, "b

java中Map的用法(HaspMap用法)

public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 1 import java.util.HashMap; 2 import java.util.Map; 3 4 5 public class Test1 { 6 7 public static void main(String[] args) { 8 Map map = new HashMap();//声明一个Map 9 map.put("s",

java按照Map值进行排序输出

package com.huawei.test; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Set; public class

详解Java中Map用法

Map以按键/数值对的形式存储数据,这里要特别说明( Map.Entry,是Map的内部类,它用来描述Map中的键/值对). Map是一个接口,我们平时多用它的实现类HashMap. 用例如下: public static void main(String args[]) { HashMap hashmap = new HashMap(); hashmap.put("Item0", "Value0"); hashmap.put("Item1",

java基础-Map的静态初始化以及Map的遍历等.....................

1.map的静态初始化,以及map遍历的几种方法: package com.cy.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; public class Test { public static void main(String[] args) { Map<String, Integer> map = new HashMap