Java中的ConcurrentHashMap containsValue()方法
Java的ConcurrentHashMap类中的containsValue()方法用于确定映射是否包含给定值。它具有以下签名:
boolean containsValue(Object value)
其中:
- value是要在映射中搜索的值。
- containsValue()方法在并发环境中工作,这意味着它可以从多个线程中调用而不会引起任何数据竞争或同步问题。
执行containsValue()操作时,该方法首先获取映射的所有段的锁定,然后在映射中所有条目的值中搜索给定值。如果在任何条目中找到该值,则该方法返回true,否则返回false。
以下是使用containsValue()方法的示例:
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentHashMapExample {
public static void main(String[] args) {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
map.put("Alice", 25);
map.put("Bob", 30);
map.put("Charlie", 35);
boolean result = map.containsValue(30);
System.out.println("Map contains value 30: " + result); // true
result = map.containsValue(40);
System.out.println("Map contains value 40: " + result); // false
}
}
输出
Map contains value 30: true
Map contains value 40: false
在这个示例中,我们首先创建了一个ConcurrentHashMap,并使用put()方法添加了三个键值对。
接下来,我们执行containsValue()操作来检查值30是否存在于映射中。该方法返回true,我们打印出结果。
最后,我们执行containsValue()操作来检查值40是否存在于映射中。该方法返回false,我们打印出结果。
java.util.concurrent.ConcurrentHashMap.containsValue()方法是Java中的内置函数,接受一个值并返回true,如果一个或多个键映射到指定的值。该方法遍历整个哈希表。因此,与containsKey()方法相比,它是一个更慢的函数。
语法:
chm.containsValue _(Object val_element)_
参数: 该方法接受一个单一参数 val_element ,这是要检查是否将其映射到地图中的任何键。
返回值: 如果将指定的 val_element 映射到 这个 映射中的任何键,则该方法返回true;否则返回false。
注意: 当指定的 value_element 为null时,该函数会抛出NullPointerException异常。
以下示例程序说明了java.util.concurrent.ConcurrentHashMap.containsValue()方法的使用:
程序1: 此程序涉及将整数值映射到字符串键。
/* Java Program to demonstrate containsValue()
method of ConcurrentHashMap */
import java.util.concurrent.*;
class ConcurrentHashMapDemo {
public static void main(String[] args)
{
ConcurrentHashMap<String, Integer> chm
= new ConcurrentHashMap<String, Integer>();
chm.put("Geeks", 120);
chm.put("for", 11);
chm.put("GeeksforGeeks", 15);
chm.put("Gfg", 50);
chm.put("GFG", 25);
// Check whether a key is mapped to 100
if (chm.containsValue(100)) {
System.out.println("100 is mapped.");
}
else {
System.out.println("100 is not mapped.");
}
// Check whether a key is mapped to 120
if (chm.containsValue(120)) {
System.out.println("120 is mapped.");
}
else {
System.out.println("120 is not mapped.");
}
}
}
输出
100 is not mapped.
120 is mapped.
程序2: 此程序涉及将字符串值映射到整数键。
/* Java Program to demonstrate containsValue()
method of ConcurrentHashMap */
import java.util.concurrent.*;
class ConcurrentHashMapDemo {
public static void main(String[] args)
{
ConcurrentHashMap<Integer, String> chm
= new ConcurrentHashMap<Integer, String>();
chm.put(100, "Geeks");
chm.put(101, "for");
chm.put(102, "Geeks");
chm.put(103, "Gfg");
chm.put(104, "GFG");
// Check whether a key is mapped to Geeks
if (chm.containsValue("Geeks")) {
System.out.println("Geeks is mapped.");
}
else {
System.out.println("Geeks is not mapped.");
}
// Check whether a key is mapped to GfG
if (chm.containsValue("GfG")) {
System.out.println("GfG is mapped.");
}
else {
System.out.println("GfG is not mapped.");
}
}
}
输出
Geeks is mapped.
GfG is not mapped.