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不匹配,从而不可能进行检索。