我正在自学 Java,以便可以编写 Android 应用程序,并遇到需要使用键值对的情况,但不知道它是什么。
我感到困惑的是这与普通变量有何不同。假设 String 类型的变量指向对象或 int 变量指向 int 值。变量不是“键”,对象不是“值”吗?
最佳答案
在最简单的层面上,键值对只是两个值,您将其中一个指定为“键”,另一个指定为“值”。
但是,更常见的是在映射的上下文中讨论键值对,即从键映射到相应的一个或多个值的(数学)函数。根据此映射的属性,您可以约束键值对集。例如,对于一对一映射,您需要集合中的键是唯一的。
<小时/>后续问题:
Is this the same as an array?
嗯...数组可以被视为从一组索引(整数)到值的映射。但映射更为通用。在 Java 中,数组还有其他与 Map 不同的属性……而且它们的实现更简单、更快、占用内存更少。
(请注意,在某些语言中,本身没有“数组”数据类型。相反,原语是“散列”或“关联数组”......这是一个更通用的映射。)
And is a key always a string?
没有。 key 可以是任何类型。 (使用可变类型作为键通常是一个坏主意,特别是如果您的映射是使用 Java 中的标准 Map
类型之一实现的。但是,即使这样在某些情况下可以工作。)
Say a variable of type String points to an object or int variable points to int value. Isn't that variable a "key", and the object a "value"?
没有。或者至少,不是像 Java 这样的静态语言。键值对与变量绑定(bind)的区别在于“键”对象是数据,因此可以采用不同的值。相比之下,变量的名称是硬连接在程序的源代码中的:您无法在运行时更改它。
(在某些动态语言中,您可以动态地(在运行时)创建新变量,对于此类语言,您可以认为变量是表示范围的映射中的键值对......在程序的某个时刻执行。但 Java 不是那样的...)
关于java - 什么是键值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25955749/