欢迎访问宙启技术站
智能推送

contains()函数检查是否包含某个元素?

发布时间:2023-06-12 19:55:43

Java中的contains()函数是一个常用的方法,用于检查一个集合是否包含某个元素。这个方法可以用于所有实现了Collection接口的类,例如List、Set、Queue等。在本文中,我们将深入探讨contains()函数,以及它的用法和实现原理。

用法

contains()函数的语法如下:

boolean contains(Object o)

其中,o表示要查找的元素。如果集合中包含o,则返回true;否则返回false。包含元素的判断依据是equals()方法。也就是说,如果集合中有一个元素a,使得a.equals(o)返回true,那么contains()函数就会返回true。

例如,对于一个List对象,我们可以使用以下代码来检查其中是否包含字符串“Hello World”:

List<String> list = new ArrayList<>();
list.add("Hello");
list.add("World");
if (list.contains("Hello World")) {
    System.out.println("包含");
} else {
    System.out.println("不包含");
}

如果运行上面的代码,控制台将输出“不包含”,因为List中没有包含字符串“Hello World”。

实现原理

contains()函数的实现原理与集合的实现方式有关。例如,对于一个ArrayList对象,contains()函数的实现方法如下:

1. 遍历ArrayList中的元素,依次调用equals()函数比较每个元素和目标元素是否相等。

2. 如果找到相等的元素,返回true;否则返回false。

由于ArrayList底层是一个数组,因此contains()函数的时间复杂度是O(n),其中n是ArrayList中元素的个数。

对于其他集合类,contains()函数的实现方法可能不同。例如,对于一个HashSet对象,contains()函数的实现方法如下:

1. 计算目标元素的哈希值。

2. 在HashSet中查找哈希值对应的链表,依次调用equals()函数比较每个元素和目标元素是否相等。

3. 如果找到相等的元素,返回true;否则返回false。

由于HashSet底层是一个哈希表,因此contains()函数的时间复杂度是O(1),即常数时间。

需要注意的是,contains()函数是在集合中查找元素是否存在。如果需要查找某个元素在集合中的位置,可以使用indexOf()函数(对于List对象),或者调用iterator()函数来遍历集合元素(对于其他集合对象)。