在上班寫工具類時,遇到了一個問題,将xml檔案的節點都放入map容器中時,map的value也是一個map,導緻取map的value時,需要判斷這個value的資料類型,用到了一下說的這些知識:
對于某些從泛型(比如:Map)中繼承過來的資料,K可能是String、Integer、等等。如果需要map.get(key),得先確定key的類型跟map的K比對。
對于key類型的判斷,大概的思路:通過map.keySet()擷取key的集合,存在Set類型變量中;然後用一個Object接收第一個key;然後有兩種方法判斷它的類型:
1、instanceof
2、class 的 equals()方法
g對于某些從泛型(比如:Map)中繼承過來的資料,K可能是String、Integer、等等。如果需要map.get(key),得先確定key的類型跟map的K比對。
對于key類型的判斷,大概的思路:通過map.keySet()擷取key的集合,存在Set類型變量中;然後用一個Object接收第一個key;然後有兩種方法判斷它的類型:
1、instanceof
2、class 的 equals()方法
第二種方法的實作:
//擷取cache中的key的class,用于判斷key的類型
Class extends Object> keyClass = null;
Map m = cache.getCache().asMap();
Set s = m.keySet();
for(Object k : s){
keyClass = k.getClass();
break;//隻需要判斷第一個元素
}
//根據cache中key的類型做類型轉換:
if(keyClass.equals(Integer.class)){//Integer類型
List 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類型
在上班寫工具類時,遇到了一個問題,将xml檔案的節點都放入map容器中時,map的value也是一個map,導緻取map的value時,需要判斷這個value的資料類型,用到了一下說的這些知識: 對于 ...
在map中一個key中存多個值
一說到map都想到key-value鍵值隊存在.key可以為最多一個null的key. 今天開發中一個業務需求,在map中一個key中存多個對象. 我首先想到Map
golang中的slice翻轉存在以及map中的key判斷
//slice翻轉 func stringReverse(src []string){ if src == nil { panic(fmt.Errorf("the src can't be ...
修改Map中确定key對應的value問題
今天在碼代碼的時候出現一個沒有預料的問題: 先看下面的代碼: public static void main(String[] args) { String[] files=new String[]{ ...
随機擷取一個集合(List, Set)中的元素,随機擷取一個Map中的key或value
利用Java提供的Random類.從List或Set中随機取出一個元素,從Map中随機擷取一個key或value. 因為Set沒有提供get(int index)方法,僅僅能先擷取一個随機數後.利用一 ...
MyBatis動态SQL使用,傳入參數Map中的Key判斷
【Java必修課】通過Value擷取Map中的鍵值Key的四種方法
1 簡介 我們都知道Map是存放鍵值對的容器,知道了Key值,使用方法Map.get(key)能快速擷取Value值.然而,有的時候我們需要反過來擷取,知道Value ...
通過Value擷取Map中的鍵值Key的四種方法
1 簡介 我們都知道Map是存放鍵值對的容器,知道了Key值,使用方法Map.get(key)能快速擷取Value值.然而,有的時候我們需要反過來擷取,知道Value ...
java代碼之美(10)---Java8 Map中的computeIfAbsent方法
Map中的computeIfAbsent方法 Map接口的實作類如HashMap,ConcurrentHashMap,HashTable等繼承了此方法,通過此方法可以在特定需求下,讓你的代碼更加簡潔. ...
随機推薦
sleep和wait的差別?
sleep指線程被調用時,占着CPU不工作,形象地說明為"占着CPU睡覺",此時,系統的CPU部分資源被占用,其他線程無法進入,會增加時間限制.wait指線程處于進入等待狀态,形象 ...
Test your application
Creating automatic test suites for your application is a good way to make it robust. It allows you t ...
Android學習筆記⑦——UI元件的學習AdapterView相關1
AdapterView是一個非常重要的元件之一,他非常靈活,是以得好好學...AdapterView本身是一個抽象類,派生出來的子類用法也十分相似,隻是界面有一定的差別,是以本節把他們歸為一類 Ada ...
stylus or less ?
為什麼不說SASS? 因為它需要安裝Ruby,而一般的前端開發人員是不會特地去安裝Ruby.我似乎更喜歡nodejs! ok,那麼我們怎麼在stylus和less 之間做出一個好的選擇呢? 首先我本人 ...
java正規表達式擷取指定HTML标簽的指定屬性值
package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Mat ...
Python 第二天學習(檔案的處理)
學習的内容是: python的檔案處理 清單,元組,字典的使用 集合的使用 函數 檔案file.textd的内容 A person with high EQ doesn't often critici ...
從零開始搭建etcd分布式存儲系統+web管理界面
什麼是ETCD 随着CoreOS和Kubernetes等項目在開源社群日益火熱,它們項目中都用到的etcd元件作為一個高可用.強一緻性的服務發現存儲倉庫,漸漸為開發人員所關注. 在雲計算時代,如何讓服 ...
[Swift]LeetCode438. 找到字元串中所有字母異位詞 | Find All Anagrams in a String
Given a string s and a non-empty string p, find all the start indices of p's anagrams in s. Strings ...
JavaScript字元集
引言 JavaScript程式使用Unicode字元集編寫.Unicode是ASCII和Latin-1的超集,并支援地球上幾乎所有在使用的語言.ECMAScript3要求JavaScript的實作必須 ...