Java HashMap中为什么常用字符串为键

映射是Java中的一个集合,用于存储键值对。此键不能为空,每个键只能指向一个值。它由java.util包的Map接口表示。有许多类为该接口提供实现。

HashMap是一个实现Map接口的类。它基于哈希表。它允许空值和空键。

简而言之,您可以将键值对存储在HashMap对象中。一旦这样做,您就可以检索各个键的值,但是,我们用于键的值应该是唯一的。

示例

import java.util.HashMap;
import java.util.Scanner;
public class HashMapExample {
   public static void main(String args[]) {
      HashMap<String, Long> map = new HashMap<String, Long>();
      System.out.println("输入需要存储的记录数: ");
      Scanner sc = new Scanner(System.in);
      int num = sc.nextInt();
      for(int i=0; i<num; i++) {
         System.out.println("Enter key (String): ");
         String key = sc.next();
         System.out.println("Enter value (Long): ");
         long value = sc.nextLong();
         map.put(key, value);
      }
      System.out.println("Values Stored . . . . . .");
      System.out.println("Enter a name (key): ");
      String reqKey = sc.next();
      System.out.println("Phone number (value): "+map.get(reqKey));
   }
}

输出结果

输入需要存储的记录数:
3
Enter key (String):
Krishna
Enter value (Long):
9848022337
Enter key (String):
Vishnu
Enter value (Long):
9848022338
Enter key (String):
Moksha
Enter value (Long):
9848022339
Values Stored . . . . . .
Enter a name (key):
Krishna
Phone number (value): 9848022337

字符串是HashMap的键

当您创建HashMap对象并尝试在其中存储键值对时,在存储时,将计算给定键的哈希码,并将其值放在键的结果哈希码表示的位置。

当您传递键以检索其值时,将再次计算哈希码,并获取哈希码表示的位置中的值(如果两个哈希码相等)。

假设我们使用某个变量作为键来存储数据,然后我们修改了该变量的值。 在检索时,由于我们更改了键,因此当前键的散列码将与存储其值的hashCode不匹配,从而不可能进行检索。

由于String类是不可变的,因此一旦创建,就无法修改它的值。 因此,建议使用String变量在哈希映射中保存键。