zoukankan      html  css  js  c++  java
  • 如何判断Map中的key或value是什么类型

    在上班写工具类时,遇到了一个问题,将xml文件的节点都放入map容器中时,map的value也是一个map,导致取map的value时,需要判断这个value的数据类型,用到了一下说的这些知识:

    对于某些从泛型(比如:Map<K, V>)中继承过来的数据,K可能是String、Integer、等等。如果需要map.get(key),得先确保key的类型跟map的K匹配。

    对于key类型的判断,大概的思路:通过map.keySet()获取key的集合,存在Set<Object>类型变量中;然后用一个Object接收第一个key;然后有两种方法判断它的类型:

    1、instanceof

    2、class 的 equals()方法

    g对于某些从泛型(比如:Map<K, V>)中继承过来的数据,K可能是String、Integer、等等。如果需要map.get(key),得先确保key的类型跟map的K匹配。

    对于key类型的判断,大概的思路:通过map.keySet()获取key的集合,存在Set<Object>类型变量中;然后用一个Object接收第一个key;然后有两种方法判断它的类型:

    1、instanceof

    2、class 的 equals()方法

    第二种方法的实现:

      

    			//获取cache中的key的class,用于判断key的类型
    			Class<? extends Object> keyClass = null;
    			Map<Object, Object> m = cache.getCache().asMap();
    			Set<Object> s = m.keySet();
    			for(Object k : s){
    				keyClass = k.getClass();
    				break;//只需要判断第一个元素
    			}
    			
    			//根据cache中key的类型做类型转换:
    			if(keyClass.equals(Integer.class)){	//Integer类型
    				List<Integer> iKeys = new LinkedList<>();
    				for(Object key : keys){
    					iKeys.add(Integer.valueOf((String) key));
    				}
    				cache.getCache().invalidateAll(iKeys);
    			}else {	//缺省为String类型,不用转换
    				cache.getCache().invalidateAll(keys);
    			}
    

                    

  • 相关阅读:
    Hibernate框架做数据库操作
    Spring AOP几个相关术语复习梳理
    Unknown initial character set index '255' received from server...
    使用IDEA的activiti时报错:发现了以元素 'process' 开头的无效内容...
    获取Class实例的4种方式
    maven设置全局和局部jdk版本
    JSP的9大内置对象和4大域对象(作用域)
    oracle中NVL,NVL2,NULLIF,COALESCE等函数
    MIME类型
    Eclipse集成Tomcat,并发布Web工程
  • 原文地址:https://www.cnblogs.com/-zpy/p/9224915.html
Copyright © 2011-2022 走看看