Java中containsKey?、contains方法的使用及注意事項(xiàng)詳解
前言
在 Java 中,containsKey 和 contains 是兩個(gè)常用的方法,分別用于檢查集合中是否包含指定的鍵或元素。雖然它們的功能類似,但它們的應(yīng)用場景和實(shí)現(xiàn)方式有所不同。本文將詳細(xì)解析這兩個(gè)方法的含義、作用、使用注意事項(xiàng),并提供示例代碼。
1. containsKey 方法詳解
1.1 含義
containsKey 是 Map 接口中的方法,用于檢查 Map 中是否包含指定的鍵。
1.2 作用
- 判斷
Map中是否存在某個(gè)鍵。 - 如果存在,返回
true;否則返回false。
1.3 使用場景
- 在操作
Map時(shí),需要檢查某個(gè)鍵是否存在。 - 避免重復(fù)插入相同的鍵。
1.4 方法簽名
boolean containsKey(Object key)
1.5 使用注意事項(xiàng)
- 鍵的類型:
key的類型必須與Map中鍵的類型一致,否則可能返回false。 - 空鍵:如果
Map允許null鍵,可以檢查null是否存在。 - 性能:
HashMap和TreeMap的containsKey方法性能不同:HashMap:平均時(shí)間復(fù)雜度為 O(1)。TreeMap:時(shí)間復(fù)雜度為 O(log n)。
1.6 示例代碼
import java.util.HashMap;
import java.util.Map;
public class ContainsKeyExample {
public static void main(String[] args) {
// 創(chuàng)建一個(gè) HashMap
Map<String, Integer> map = new HashMap<>();
map.put("apple", 10);
map.put("banana", 20);
map.put("cherry", 30);
// 檢查鍵是否存在
System.out.println("Contains key 'apple': " + map.containsKey("apple")); // true
System.out.println("Contains key 'grape': " + map.containsKey("grape")); // false
// 檢查 null 鍵
map.put(null, 40);
System.out.println("Contains key 'null': " + map.containsKey(null)); // true
}
}
2. contains 方法詳解
2.1 含義
contains 是 Collection 接口中的方法,用于檢查集合中是否包含指定的元素。
2.2 作用
- 判斷集合中是否存在某個(gè)元素。
- 如果存在,返回
true;否則返回false。
2.3 使用場景
- 在操作
List、Set等集合時(shí),需要檢查某個(gè)元素是否存在。 - 避免重復(fù)插入相同的元素。
2.4 方法簽名
boolean contains(Object o)
2.5 使用注意事項(xiàng)
- 元素的類型:
o的類型必須與集合中元素的類型一致,否則可能返回false。 - 空元素:如果集合允許
null元素,可以檢查null是否存在。 - 性能:不同集合的實(shí)現(xiàn)性能不同:
ArrayList:時(shí)間復(fù)雜度為 O(n)。HashSet:平均時(shí)間復(fù)雜度為 O(1)。TreeSet:時(shí)間復(fù)雜度為 O(log n)。
- 對(duì)象的 equals 方法:
contains方法依賴于對(duì)象的equals方法來判斷元素是否相等,因此需要確保對(duì)象的equals方法正確實(shí)現(xiàn)。
2.6 示例代碼
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class ContainsExample {
public static void main(String[] args) {
// 創(chuàng)建一個(gè) ArrayList
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("cherry");
// 檢查元素是否存在
System.out.println("Contains 'apple': " + list.contains("apple")); // true
System.out.println("Contains 'grape': " + list.contains("grape")); // false
// 檢查 null 元素
list.add(null);
System.out.println("Contains 'null': " + list.contains(null)); // true
// 創(chuàng)建一個(gè) HashSet
Set<Integer> set = new HashSet<>();
set.add(10);
set.add(20);
set.add(30);
// 檢查元素是否存在
System.out.println("Contains 20: " + set.contains(20)); // true
System.out.println("Contains 40: " + set.contains(40)); // false
}
}
3. containsKey 與 contains 的區(qū)別
| 特性 | containsKey | contains |
|---|---|---|
| 所屬接口 | Map 接口 | Collection 接口 |
| 作用對(duì)象 | 檢查 Map 中是否包含指定的鍵 | 檢查集合中是否包含指定的元素 |
| 性能 | HashMap:O(1);TreeMap:O(log n) | ArrayList:O(n);HashSet:O(1) |
| 依賴方法 | 依賴 hashCode 和 equals 方法 | 依賴 equals 方法 |
| 使用場景 | 操作 Map 時(shí)檢查鍵是否存在 | 操作集合時(shí)檢查元素是否存在 |
4、總結(jié)
containsKey 和 contains 是 Java 中常用的方法,分別用于檢查 Map 中的鍵和集合中的元素是否存在。理解它們的區(qū)別和使用場景,可以幫助我們編寫更高效、更健壯的代碼。在實(shí)際開發(fā)中,根據(jù)需求選擇合適的集合類型和方法,可以顯著提升程序的性能。
到此這篇關(guān)于Java中containsKey 、contains方法的使用及注意事項(xiàng)詳解的文章就介紹到這了,更多相關(guān)Java containsKey 、 contains方法 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA maven 構(gòu)建簡單springmvc項(xiàng)目(圖文教程)
在工作當(dāng)中,我們有時(shí)需要?jiǎng)?chuàng)建一個(gè)全新的工程,而基于spring-mvc web的工程較為常見,這篇文章主要介紹了IntelliJ IDEA maven 構(gòu)建簡單springmvc項(xiàng)目(圖文教程),感興趣的小伙伴們可以參考一下2018-05-05
利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能
這篇文章主要給大家介紹了關(guān)于如何利用Java實(shí)現(xiàn)復(fù)制Excel工作表功能的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
MyEclipse2018中安裝Mybatis generator插件的實(shí)現(xiàn)步驟
這篇文章主要介紹了MyEclipse2018中安裝Mybatis generator插件的實(shí)現(xiàn)步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
WeakHashMap?和?HashMap?區(qū)別及使用場景
這篇文章主要為大家介紹了WeakHashMap?和?HashMap?的區(qū)別是什么以及何時(shí)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
spring?boot教程之IDEA環(huán)境下的熱加載與熱部署
這篇文章主要介紹了spring?boot系列教程中的IDEA環(huán)境下的熱加載與熱部署的相關(guān)資料,需要的朋友可以參考下2022-09-09
Mybatis-Plus中分頁插件PaginationInterceptor的使用
我們在開發(fā)的過程中,經(jīng)常會(huì)遇到分頁操作,本文主要介紹了Mybatis-Plus中分頁插件PaginationInterceptor的使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
jvm垃圾回收GC調(diào)優(yōu)基礎(chǔ)原理分析
談到調(diào)優(yōu),這一定是針對(duì)特定場景、特定目的的事情, 對(duì)于 GC 調(diào)優(yōu)來說,首先就需要清楚調(diào)優(yōu)的目標(biāo)是什么?從性能的角度看,通常關(guān)注三個(gè)方面,內(nèi)存占用(footprint)、延時(shí)(latency)和吞吐量(throughput)2022-01-01

