我正在自学Java,所以我可以编写Android应用程序,并且需要使用键值对,但不知道它是什么。我试过查找但找不到任何好的资源来解释它。
有人能够向我解释这一点,还是指向我可以阅读的资源? 谢谢!
编辑:我感到困惑的是这与普通变量有何不同。假设String类型的变量指向一个对象,或者int变量指向int值。不是变量a"键"和对象a"值?
答案 0 :(得分:4)
键值对是通常以这样一种方式连接的两个值,即使用键访问该值。它们通常用于各种数据结构中,以提供对价值的快速访问。例如,查看hashtable data structure
(在Java中,您可以查看HashMap
或Hashtable
)
例如,我们假设我们有一个结构CartoonCharacter
持有所提到的对,如:
这种键值关系看起来像是:
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并不是那样......)