containsKey(Object key) 方法的規範中寫道:“若且唯若此映射包含針對滿足 (key==null ? k==null : key.equals(k)) 的鍵 k 的映射關係時,返回 true”。不 應將此規範解釋為:調用具有非空參數 key 的 Map.containsKey 將導致對任意的鍵 k 調用 key.equals(k)。實現可隨意進行最佳化,以避免調用 equals
基本介紹
- 中文名:containsKey
- 外文名:containsKey
- 使用例子:Map 的 get()
- 避免調用:equals
- 返回為 null:生成數據
使用例子:
1. 調用 Map 的 get() 方法獲取數據;
2. 如果返回不為 null, 直接返回該數據;
3. 如果返回為 null, 則生成數據, 或者從其他地方獲取數據, 然後存放入 Map 中, 最後返回該數據.
這裡, 我們可以通過使用 Map 的containsKey() 方法來檢測數據(value)是否存在, 如果key存在, 則表明已經獲取過一次數據, 那么直接返回該 key 在 Map 中的值. 不管是否為 null 都直接返回; 如果 key 不存在, 則去生成或者獲取數據, 並放入到 Map 中, 並返回該數據.
這裡使用 containsKey() 來檢測可以套用於: 1. 從其他地方獲取的數據可能為空, 並且不會有變化; 2. 獲取數據比較耗時. 這個場景下, 使用該方法可以大大降低消耗, 特別是在同步情況下。
上邊說的太麻煩,看下邊的例子就一目了然了
package com.okdi.controller;import java.util.HashMap;import java.util.Map;public class Test { /** * @param args */ public static void main(String[] args) { Map map=new HashMap(); map.put("a","aaa"); System.out.println(map.containsKey("a")); //輸出true 如果這個map集合中有這個key就返回true System.out.println(map.containsKey("b")); //輸出false 沒有就返回false }}