Java中就什么是映射的简单理解

映射是一种特殊的对应关系。

打个比方,生活中一只箭可以射中一只鸟,也可以射不中,甚至可以射中几只。但是在程序中,这只箭必须射中一只,而且也只能能射中一只。

正常一点的理解就是:

映射就是把两个对象对应起来。

对应的对象叫做象,被对应的对象叫做原象。

Java中有非常好的例子。实现了Map接口的HashMap和TreeMap。前面已经提到过Map类是实现键值对的双向链表,这里就是完成了key和value的映射,当然key要是唯一的才可以。

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源包含源代码 易看易懂 其实就是一发射机制 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。这一概念的提出很快引发了计算机科学领域关于应用反射性的研究。它首先被程序语言的设计领域所采用,并在Lisp和面向对象方面取得了成绩。其LEAD/LEAD++ 、OpenC++ 、MetaXa和OpenJava等就是基于反射机制的语言。最近,反射机制也被应用到了视窗系统、操作系统和文件系统。 反射本身并不是一个新概念,它可能会使我们联想到光学的反射概念,尽管计算机科学赋予了反射概念新的含义,但是,从现象上来说,它们确实有某些相通之处,这些有助于我们的理解。在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。可以看出,同一般的反射概念相比,计算机科学领域的反射不单单指反射本身,还包括对反射结果所采取的措施。所有采用反射机制的系统(即反射系统)都希望使系统的实现更开放。可以说,实现了反射机制的系统都具有开放性,但具有开放性的系统并不一定采用了反射机制,开放性是反射系统的必要条件。一般来说,反射系统除了满足开放性条件外还必须满足原因连接(Causally-connected)。所谓原因连接是指对反射系统自描述的改变能够立即反映到系统底层的实际状态和行为上的情况,反之亦然。开放性和原因连接是反射系统的两大基本要素。13700863760 Java,反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。反射允许我们在编写与执行时,使我们的程序代码能够接入装载到JVM的类的内部信息,而不是源代码选定的类协作的代码。这使反射成为构建灵活的应用的主要工具。但需注意的是:如果使用不当,反射的成本很高。
### 回答1: 在 Java ,switch 语句的底层实现是使用哈希表。在编译时,编译器会生成一个哈希表并将每个 case 的值映射到相应的代码偏移量。当执行 switch 语句时,程序会在哈希表查找与表达式匹配的值,并跳转到相应的代码偏移量处执行。 这种实现方式的优势在于,可以在常数时间内完成查找,因此 switch 语句的性能很好。 请注意,switch 语句只能用于整数类型(byte、short、char、int)和枚举类型,不能用于浮点数类型或字符串类型。 ### 回答2: Java的switch语句在底层实现上使用了一种叫作查表法的算法。这种算法通过查找固定的表格来决定跳转到哪个case分支。 在编译时,Java编译器会将switch语句的case分支的值生成成一个固定的表格,表格的每个条目包含了case分支的值和该分支对应的代码位置。当程序执行到switch语句时,会根据给定的表达式的值去查找表格,以确定应该跳转到哪个case分支执行相关代码。 查找表格的算法会根据给定的表达式的值进行比较操作,并依次比较表格的每个条目的值,直到找到匹配的条目,然后跳转到该条目对应的代码位置执行相应的代码。如果没有匹配的条目,可能会跳转到一个默认的分支。 这种查表法的实现方式相较于使用多个嵌套的if-else语句来判断每个分支的值更高效一些,因为它直接跳转到目标代码位置,而不需要进行逐个比较和判断。 需要注意的是,为了能够使用查表法,switch语句的表达式必须是一个可以用整型或字符类型表示的常量或者枚举类型,并且case分支的值也必须是常量或枚举类型的值。 总的来说,Java底层关于switch的case的具体算法是通过查表法来匹配给定表达式的值并跳转到对应的代码位置执行相关代码。 ### 回答3: Java的switch语句是用于多分支选择的一种结构,它的底层实现涉及到与计算机硬件和编译器的配合。具体算法如下: 1. 首先,编译器会将switch语句的表达式的值与每个case语句的常量值进行比较。这个比较过程可以使用简单的数学运算来实现,例如比较大小或计算哈希值。 2. 当找到与表达式值匹配的case语句时,程序将执行匹配的case代码块。这个过程类似于一系列if-else语句,只是使用了更高效的匹配和跳转机制。 3. 如果找不到与表达式值匹配的case语句,那么程序将执行default代码块(如果存在)。default相当于if-else结构的else部分,用于处理一些默认情况。 4. 在执行case代码块之前,编译器会根据具体的条件和情况,可能会使用一些优化策略,例如使用查表法或计算跳转表,以提高性能和效率。 总之,switch语句的具体算法是通过与表达式值的比较来选择执行的代码块,其可能会使用一些优化策略以提高效率。这些底层机制对于开发者来说是透明的,因为Java语言已经帮我们抽象出了更易于理解和使用的switch语句结构。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值