在最简单的层面上,键值对只是两个值,其中一个被指定为“键”,另一个被指定为“值”。
然而,在映射的上下文中谈论键值对更为常见,即从键映射到相应值的(数学)函数。根据此映射的属性,您可以限制键值对集。例如,对于 1 对 1 映射,您需要集合中的键是唯一的。
后续问题:
这和数组一样吗?
嗯……一个数组可以被认为是从一组索引(整数)到值的映射。但是映射更通用。而在 Java 中,数组还有其他属性可以将它们与Maps区分开来……而且它们有一个更简单、更快、内存占用更少的实现。
(请注意,在某些语言中,本身没有“数组”数据类型。相反,原语是“散列”或“关联数组”......这是一个更通用的映射。)
键总是字符串吗?
不可以。密钥可以是任何类型。(使用可变类型作为键通常是一个坏主意,特别是如果您的映射是使用MapJava 中的一种标准类型实现的。但是,即使在某些情况下也可以工作。)
假设 String 类型的变量指向一个对象或 int 变量指向 int 值。那个变量不是“键”,对象不是“值”吗?
不,或者至少,不是像 Java 这样的静态语言。键值对与变量绑定的区别在于“键”对象是数据,因此可以采用不同的值。相比之下,变量的名称在程序的源代码中是固定的:您不能在运行时更改它。
(在某些动态语言中,您可以(在运行时)动态创建新变量,对于此类语言,您可能会争辩说变量是表示范围的映射中的键值对……在程序执行的某个时刻。但是Java不是那样的......)
键值对是两个值,通常以使用键访问值的方式连接。它们通常用于各种数据结构中,以提供对值的快速访问。hashtable data structure例如查看(在 Java 中,您可以查看HashMap或Hashtable)
例如,假设我们有一个CartoonCharacter包含上述对的结构,例如:

这种键值关系类似于:
CartoonCharacter[lastName] = "Bunny";
Run Code Online (Sandbox Code Playgroud)
因此,如果您想获取该值,Bunny您可以通过 key 访问它lastName。
key = "lastName"
value = CartoonCharacter.get(key)
print (value) // this would print "Bunny"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34321 次 |
| 最近记录: |