为什么字符串类在Java的HashMap中作为键很流行?


Map是Java中的一种集合,用于存储键值对。键不能为null,每个键只能指向一个值。它由java.util包的**Map**接口表示。有各种类实现了这个接口。

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

简而言之,你可以在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("Enter the number of records you need to store: ");
      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));
   }
}

输出

Enter the number of records you need to store:
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,就不能修改它的值。因此,建议使用String变量来保存哈希映射中的键。

更新于:2020年7月2日

3K+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始
广告