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方法 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详谈Spring框架之事务管理

    详谈Spring框架之事务管理

    下面小编就为大家带来一篇详谈Spring框架之事务管理。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • 浅谈Java中格式化输出

    浅谈Java中格式化输出

    这篇文章主要介绍了Java中格式化输出,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 收集的一些常用java正则表达式

    收集的一些常用java正则表达式

    收集的一些常用java正则表达式,需要的朋友可以参考一下
    2013-02-02
  • Java实现萝卜勇者游戏的示例代码

    Java实现萝卜勇者游戏的示例代码

    《萝卜勇者》是由国内玩家自制的一款独立游戏,玩家扮演萝卜勇士闯关,打败各种邪恶的敌人,获得最后的胜利。本文将利用Java实现这一游戏,感兴趣的可以了解一下
    2022-02-02
  • spring aop底层原理及如何实现

    spring aop底层原理及如何实现

    这篇文章主要介绍了spring aop底层原理及如何实现,帮助大家更好的理解和学习使用spring aop,感兴趣的朋友可以了解下
    2021-04-04
  • maven打包时配置多环境参数的实现

    maven打包时配置多环境参数的实现

    本文主要介绍了maven打包时配置多环境参数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • 浅谈Java中的class类

    浅谈Java中的class类

    这篇文章主要介绍了浅谈Java中的class类,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 入门java的第一步HelloWorld

    入门java的第一步HelloWorld

    这篇文章主要介绍了入门java的第一步-Hello,World,文中通过示例代码介绍的非常详细,对大家的java初步学习具有一定的学习价值,需要的朋友可以参考下
    2021-04-04
  • Java中IO流文件读取、写入和复制的实例

    Java中IO流文件读取、写入和复制的实例

    下面小编就为大家带来一篇Java中IO流文件读取、写入和复制的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • spring boot集成shiro详细教程(小结)

    spring boot集成shiro详细教程(小结)

    这篇文章主要介绍了spring boot 集成shiro详细教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01

最新评论