什么是键值对?

时间:2014-09-21 04:20:08

标签: java keyvaluepair

我正在自学Java,所以我可以编写Android应用程序,并且需要使用键值对,但不知道它是什么。我试过查找但找不到任何好的资源来解释它。

有人能够向我解释这一点,还是指向我可以阅读的资源? 谢谢!

编辑:我感到困惑的是这与普通变量有何不同。假设String类型的变量指向一个对象,或者int变量指向int值。不是变量a"键"和对象a"值?

2 个答案:

答案 0 :(得分:4)

键值对是通常以这样一种方式连接的两个值,即使用键访问该值。它们通常用于各种数据结构中,以提供对价值的快速访问。例如,查看hashtable data structure(在Java中,您可以查看HashMapHashtable

例如,我们假设我们有一个结构CartoonCharacter持有所提到的对,如:

bugs_bunny

这种键值关系看起来像是:

CartoonCharacter[lastName] = "Bunny";

因此,如果您想获得值Bunny,您可以通过密钥lastName访问它。

key = "lastName"
value = CartoonCharacter.get(key)
print (value) // this would print "Bunny"

答案 1 :(得分:2)

在最简单的层面上,键值对只是两个值,其中一个你已指定为"键"另一个你指定为"值"。

然而,更常见的是在映射的上下文中谈论键值对,即,从键映射到相应值或值的(数学)函数。根据此映射的属性,您可以约束键值对的集合。例如,对于1对1映射,您需要集合中的键是唯一的。


后续问题:

  

这与数组相同吗?

嗯......数组可以被视为从一组索引(整数)到值的映射。但是映射更为通用。在Java中,数组具有将其与Map区别开来的其他属性......并且它们具有更简单,更快速且更少内存的实现。

(请注意,在某些语言中,没有"数组"数据类型本身。相反,原语是"哈希"或"关联数组&# 34; ......这是一张更为通用的地图。)

  

并且钥匙总是一个字符串?

没有。密钥可以是任何类型。 (使用可变类型作为键通常是一个坏主意,尤其是如果使用Java中的标准Map类型之一实现映射。但是,即使这样也可以使用某些情况。)

  

假设String类型的变量指向一个对象,或者int变量指向int值。不是变量a"键"和对象a"值"?

没有。或者至少,不是像Java这样的静态语言。区分键值对与变量绑定的关键是"键"对象是数据,因此可以采用不同的值。相比之下,变量的名称在程序的源代码中是硬连线的:您无法在运行时更改它。

(在某些动态语言中,您可以动态创建新变量(在运行时),对于此类语言,您可以认为变量是表示范围的映射中的键值对...在程序中的某个点和#39;执行。但Java并不是那样......)