java - 什么是键值对?

标签 java key-value

我正在自学 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/

相关文章:

java - JAX-WS 客户端抛出 SOAPFaultException 而不是自定义异常

java - 为什么 findById 响应未找到 id 但 findAll 返回具有此 id 的对象

java - 关于 Java 接口(interface)的一般问题

javascript - JS在键值对数组中查找特定键

java - 如何在 Java 中交换 arrayMap 值和键

mongodb - 如何将多个文档合并成一个唯一的键值文档?

java - 为什么将 Spring DI 添加到 Jersey 1.19.1 会使我的资源成为单例?

java - "AWT-EventQueue-0"NullpointerException 不一致错误信息

javascript - 如何为键值对象添加引号?

java - 检查键值对列表中具有相同键的值