为什么字符串类在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变量来保存哈希映射中的键。
广告