在上班写工具类时,遇到了一个问题,将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);
}

  

如何判断Map中的key或value是什么类型的更多相关文章

  1. 如何判断Map中的key或value类型

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

  2. 在map中一个key中存多个值

    一说到map都想到key-value键值队存在.key可以为最多一个null的key. 今天开发中一个业务需求,在map中一个key中存多个对象. 我首先想到Map<String,List> ...

  3. golang中的slice翻转存在以及map中的key判断

    //slice翻转 func stringReverse(src []string){ if src == nil { panic(fmt.Errorf("the src can't be ...

  4. 修改Map中确定key对应的value问题

    今天在码代码的时候出现一个没有预料的问题: 先看下面的代码: public static void main(String[] args) { String[] files=new String[]{ ...

  5. 随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value

    利用Java提供的Random类.从List或Set中随机取出一个元素,从Map中随机获取一个key或value. 因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后.利用一 ...

  6. MyBatis动态SQL使用,传入参数Map中的Key判断

    <select id="" parameterType="Map" resultMap="commodityResultMap" &g ...

  7. 【Java必修课】通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  8. 通过Value获取Map中的键值Key的四种方法

    1 简介 我们都知道Map是存放键值对<Key,Value>的容器,知道了Key值,使用方法Map.get(key)能快速获取Value值.然而,有的时候我们需要反过来获取,知道Value ...

  9. java代码之美(10)---Java8 Map中的computeIfAbsent方法

    Map中的computeIfAbsent方法 Map接口的实现类如HashMap,ConcurrentHashMap,HashTable等继承了此方法,通过此方法可以在特定需求下,让你的代码更加简洁. ...

随机推荐

  1. ubuntu16.04安装visual-studio-code

    微软主页的安装说明,https://code.visualstudio.com/docs/setup/linux    有一点英语基础就能看懂,写的很好,一切以官方文档为主 方法一:可以使用umake ...

  2. UVa 1642 - Magical GCD(数论)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. ansible--03

    一. Ad-hoc命令简介 1. 格式:ansible <host> [opion] 2. option参数: -v:输出详细的执行过程, -vvv最详细的结果 -i:指定inventor ...

  4. [源码分析]ArrayList

    add public boolean add(E e) { //先确保数组容量 ensureCapacityInternal(size + 1); //直接将值放在size位置 elementData ...

  5. 使用 git push 出现error setting certificate verify locations问题记录

    昨天重新装了个系统,使用时出现了error setting certificate verify locations. 出现错误仔细看错误提示,这可是解决问题的关键信息. 将错误的信息复制到搜索引擎中 ...

  6. pom xml testng

    <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId ...

  7. select * from * with ur

    DB2中,共有四种隔离级:RS,RR,CS,UR,DB2提供了这4种不同的保护级别来隔离数据.隔离级是影响加锁策略的重要环节,它直接影响加锁的范围及锁的持续时间.两个应用程序即使执行的相同的操作,也可 ...

  8. 【js】按下enter键禁止表单自动提交

    //enter键盘事件 document.onkeypress=function(){ if(event.keyCode==13){ return false; } }

  9. 展开label,利用YYText实现文字显示不完末尾添加全文

    效果图: 操作 先github下载<YYText>文件导入, 代码如下: #import "ViewController.h" #import "YYLabe ...

  10. 天天沉迷于皇上本宫的都是sb

    天天沉迷于皇上.本宫.奴才.太后的都是sb,时不时还要被某王和某平民的爱情感动的落泪.这是病,要治,最有效的治疗方法是38度的夏天去搬砖. 拍这些电视的人真不傻,知道真sb多,这种电视剧才能爆款.