为什么字符串是Java中流行的HashMap键?
有很多情况下,数据被存储为键值对。在Java中,它可以通过**"map "**实现,它是一个集合。键通常不应该是空的,它们应该只指向一个值。在Map中,有各种可用的类,其中。 哈希玛是一个实现了Map接口的类。
Hashmap是基于Hashtable的。它可以允许空值和空键。
- 最重要的是,键应该是唯一的,有了这个唯一的键,我们就可以快速检索到值了。
- 首先,让我们看一个使用Hashmap存储和显示数据的例子,然后会看到为什么在Java中String是一个流行的hashmap键!
让我们来存储一些包含手机号码的人的数据。
Java
// HashMap is available in util package
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
// Scanner is needed to get inputs and
// it is also in util package
import java.util.Scanner;
public class StringHashMapExample {
public static void main(String args[])
{
HashMap<String, Long> hashMapOfUsers
= new HashMap<String, Long>();
System.out.println(
"How many person details containing phone"
"numbers are going to get stored: ");
Scanner scanner = new Scanner(System.in);
int phoneNumber = scanner.nextInt();
for (int i = 0; i < phoneNumber; i++) {
System.out.println(
"Enter User Name [key (String)]: ");
String key = scanner.next();
System.out.println(
"Enter Phone Number [value (Long)]: ");
long value = scanner.nextLong();
// Let us store key values as
// lower case
hashMapOfUsers.put(key.toLowerCase(), value);
}
System.out.println(
"Get the details of users . . . . . .");
Iterator hmIterator
= hashMapOfUsers.entrySet().iterator();
// Iterating through Hashmap
while (hmIterator.hasNext()) {
Map.Entry hashMapElement
= (Map.Entry)hmIterator.next();
// Printing mark corresponding
// to string entries
System.out.println(hashMapElement.getKey()
+ " : "
+ hashMapElement.getValue());
}
System.out.println(
"Enter a name to search in the hashmap(key): ");
String reqKey = scanner.next();
// To avoid case mismatch of user names,
// it is converted to lower case
System.out.println(
"Phone number (value): "
+ hashMapOfUsers.get(reqKey.toLowerCase()));
}
}
输出。

为什么 "字符串 "是Java中流行的HashMap键?
1.HashMap
- 当我们使用HashMap存储 数据时,会计算出给定键的哈希代码,例如,我们在上面的例子中给出了2个键,对它们来说。
- HashMap 被计算出来,它的值被放置在键的哈希码结果所代表的位置。
- 同样,在获取数据的时候,哈希码也被计算出来,通过这种方式,哈希码所代表的位置上的值被检索出来。总是通过检查两个哈希码是否相等,来检索值。
- 除了字符串,如果我们使用任何其他数据类型并试图改变值和键,存储的哈希值(在存储时间)和检索的哈希值(在获取时间)肯定会有所不同,因此我们无法检索到适当的值。
2.2. 不可变性。
- 字符串是不可变的。在字符串创建后,我们不能修改它的值。这是主要的优势。即哈希码在存储和检索时保持不变。因此,在哈希图中使用字符串变量来保存键值是一种流行的方法。
- 哈希码被缓存,不需要再次计算(因为字符串是不可变的)。
- 不变性是一个很好的机制,每次都能为一个键对象获得相同的哈希代码。因此,总是选择String是最理想的,它可以解决内存泄漏、值不可用等问题。
- 当数据存储在HashMap中时,hashCode()和equals()方法就会发挥作用。字符串因为其不可变性为其提供了最大的支持。