Java中containsKey 、contains方法的使用及注意事项详解

 更新时间:2025年06月27日 10:01:40   作者:技术分享~  
这篇文章主要介绍了Java中containsKey 、 contains方法的使用及注意事项的相关资料,两者分别用于检查键和元素存在性,所属接口不同,性能差异显著,文中通过代码介绍的非常详细,需要的朋友可以参考下

前言

在 Java 中,containsKey 和 contains 是两个常用的方法,分别用于检查集合中是否包含指定的键或元素。虽然它们的功能类似,但它们的应用场景和实现方式有所不同。本文将详细解析这两个方法的含义、作用、使用注意事项,并提供示例代码。

1. containsKey 方法详解

1.1 含义

containsKey 是 Map 接口中的方法,用于检查 Map 中是否包含指定的键。

1.2 作用

  • 判断 Map 中是否存在某个键。
  • 如果存在,返回 true;否则返回 false

1.3 使用场景

  • 在操作 Map 时,需要检查某个键是否存在。
  • 避免重复插入相同的键。

1.4 方法签名

boolean containsKey(Object key)

1.5 使用注意事项

  • 键的类型key 的类型必须与 Map 中键的类型一致,否则可能返回 false
  • 空键:如果 Map 允许 null 键,可以检查 null 是否存在。
  • 性能HashMap 和 TreeMap 的 containsKey 方法性能不同:
    • HashMap:平均时间复杂度为 O(1)。
    • TreeMap:时间复杂度为 O(log n)。

1.6 示例代码

import java.util.HashMap;
import java.util.Map;

public class ContainsKeyExample {
    public static void main(String[] args) {
        // 创建一个 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 作用

  • 判断集合中是否存在某个元素。
  • 如果存在,返回 true;否则返回 false

2.3 使用场景

  • 在操作 ListSet 等集合时,需要检查某个元素是否存在。
  • 避免重复插入相同的元素。

2.4 方法签名

boolean contains(Object o)

2.5 使用注意事项

  • 元素的类型o 的类型必须与集合中元素的类型一致,否则可能返回 false
  • 空元素:如果集合允许 null 元素,可以检查 null 是否存在。
  • 性能:不同集合的实现性能不同:
    • ArrayList:时间复杂度为 O(n)。
    • HashSet:平均时间复杂度为 O(1)。
    • TreeSet:时间复杂度为 O(log n)。
  • 对象的 equals 方法contains 方法依赖于对象的 equals 方法来判断元素是否相等,因此需要确保对象的 equals 方法正确实现。

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) {
        // 创建一个 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

        // 创建一个 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 的区别

特性containsKeycontains
所属接口Map 接口Collection 接口
作用对象检查 Map 中是否包含指定的键检查集合中是否包含指定的元素
性能HashMap:O(1);TreeMap:O(log n)ArrayList:O(n);HashSet:O(1)
依赖方法依赖 hashCode 和 equals 方法依赖 equals 方法
使用场景操作 Map 时检查键是否存在操作集合时检查元素是否存在

4、总结

   containsKey 和 contains 是 Java 中常用的方法,分别用于检查 Map 中的键和集合中的元素是否存在。理解它们的区别和使用场景,可以帮助我们编写更高效、更健壮的代码。在实际开发中,根据需求选择合适的集合类型和方法,可以显著提升程序的性能。

到此这篇关于Java中containsKey 、contains方法的使用及注意事项详解的文章就介绍到这了,更多相关Java containsKey 、 contains方法 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IntelliJ IDEA maven 构建简单springmvc项目(图文教程)

    IntelliJ IDEA maven 构建简单springmvc项目(图文教程)

    在工作当中,我们有时需要创建一个全新的工程,而基于spring-mvc web的工程较为常见,这篇文章主要介绍了IntelliJ IDEA maven 构建简单springmvc项目(图文教程),感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 利用Java实现复制Excel工作表功能

    利用Java实现复制Excel工作表功能

    这篇文章主要给大家介绍了关于如何利用Java实现复制Excel工作表功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-12-12
  • MyEclipse2018中安装Mybatis generator插件的实现步骤

    MyEclipse2018中安装Mybatis generator插件的实现步骤

    这篇文章主要介绍了MyEclipse2018中安装Mybatis generator插件的实现步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • WeakHashMap 和 HashMap 区别及使用场景

    WeakHashMap 和 HashMap 区别及使用场景

    这篇文章主要为大家介绍了WeakHashMap 和 HashMap 的区别是什么以及何时使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • springboot使用@data注解减少不必要代码

    springboot使用@data注解减少不必要代码

    这篇文章主要介绍了springboot使用@data注解减少不必要代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • spring boot教程之IDEA环境下的热加载与热部署

    spring boot教程之IDEA环境下的热加载与热部署

    这篇文章主要介绍了spring boot系列教程中的IDEA环境下的热加载与热部署的相关资料,需要的朋友可以参考下
    2022-09-09
  • Java内存分布归纳整理详解

    Java内存分布归纳整理详解

    这篇文章主要介绍了java程序运行时内存分布详解,需要的朋友可以参考下
    2017-04-04
  • 自己写的简易版Java日志类分享

    自己写的简易版Java日志类分享

    这篇文章主要介绍了自己写的简易版Java日志类分享,本文直接给出实现代码,需要的朋友可以参考下
    2015-06-06
  • Mybatis-Plus中分页插件PaginationInterceptor的使用

    Mybatis-Plus中分页插件PaginationInterceptor的使用

    我们在开发的过程中,经常会遇到分页操作,本文主要介绍了Mybatis-Plus中分页插件PaginationInterceptor的使用,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • jvm垃圾回收GC调优基础原理分析

    jvm垃圾回收GC调优基础原理分析

    谈到调优,这一定是针对特定场景、特定目的的事情, 对于 GC 调优来说,首先就需要清楚调优的目标是什么?从性能的角度看,通常关注三个方面,内存占用(footprint)、延时(latency)和吞吐量(throughput)
    2022-01-01

最新评论