天天看點

php map key value,如何判斷Map中的key或value是什麼類型

在上班寫工具類時,遇到了一個問題,将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&comma; 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 &quest;

為什麼不說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分布式存儲系統&plus;web管理界面

什麼是ETCD 随着CoreOS和Kubernetes等項目在開源社群日益火熱,它們項目中都用到的etcd元件作為一個高可用.強一緻性的服務發現存儲倉庫,漸漸為開發人員所關注. 在雲計算時代,如何讓服 ...

&lbrack;Swift&rsqb;LeetCode438&period; 找到字元串中所有字母異位詞 &vert; 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的實作必須 ...