热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用hashmap测试订单

如何解决《使用hashmap测试订单》经验,为你挑选了1个好方法。

我是一个红宝石初学者并且读到Hash没有订单.我尝试使用这个概念,但发现我仍然可以订购这样的东西:

Travel_Plans = Hash.new
Travel_Plans[4] = "Colorado Springs"
Travel_Plans[1] = "Santa Fe"
Travel_Plans[2] = "Raton"
Travel_Plans[5] = "Denver"
Travel_Plans[3] = "Pueblo"

puts Travel_Plans.sort

有人可以解释"哈希没有秩序"是什么意思吗?

如果你能提供一个很棒的简单例子.



1> tadman..:

Ruby的Hash类用传统术语表示"哈希映射"或"键值字典".这些是旨在允许快速随机访问单个元素的结构,但元素本身没有内在的顺序.

内部Ruby Hash使用hash每个对象必须提供的方法将元素组织到内存中的各个位置以用作键.Ruby的Hash异常,即使不是非常灵活,因为一个对象,任何对象都可以用作一个键,并且它保持原样.与Javascript对比,其中键必须只是字符串和字符串.

这意味着你可以这样做:

{ 1 => 'Number One', '1' => 'String One', :One=> 'Symbol One', 1.0 => 'Float One }

那里有四个完全不同的键.

这与Array排序是数组如何工作的重要部分的情况形成对比.你不希望有一个队列,其中的东西在一个顺序中出现而在另一个顺序中出现.

现在Ruby的Hash类曾经没有内在的顺序,但由于受欢迎的需求,它现在按插入方式存储顺序.也就是说,插入的第一个项目是"第一个".通常情况下,您不会明确依赖此行为,但如果您正在关注它,它会显示出来:

a = { x: '1', y: '2' }
# => {:x=>"1, :y=>"2"}

b = { }
b[:y] = '2'
b[:x] = '1'
b
# => {:y=>"2", :x=>"1"}

请注意,b由于以相反的顺序插入键,因此键的顺序是相反的.它们仍然是等价的:

a == b
# => true

当您调用sorta时Hash,实际上最终将其转换为键/值对数组,然后对每个键/值对进行排序:

b.sort
# => [[:x, "1"], [:y, "2"]]

Hash如果您愿意,可以将其转换回a :

b.sort.to_h
# => {:x=>"1", :y=>"2"}

所以现在它正确地"订购"了.但实际上,这很重要,因为您将根据需要单独访问密钥.b[:x]不管:x关键在哪里,它始终返回正确的值,无论如何.

关于Ruby的一些注意事项:

不要使用Hash.new,而只是{ }用来表示一个空的Hash结构.

不要对变量使用大写字母,它们在Ruby中具有重要意义. Travel_Plans是一个常数,而不是一个变量,因为它以大写字母开头.这些是保留ClassNameCONSTANT_NAME类型使用.这应该是travel_plans.


它不那么冗长,这通常是Ruby代码引导的方向,加上其他语言的映射,其中表示符号相同.对于像Hash.new(0)`或`Hash.new {| h,k | ...}`你需要自定义行为.
非常好的解释.狡辩:也许是"平等"而不是"等同".当哈希`h`没有键'k`,`fetch`和默认值(只要你走了这么远)时,考虑提一下`h [k]`.
推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • HashMap的相关问题及其底层数据结构和操作流程
    本文介绍了关于HashMap的相关问题,包括其底层数据结构、JDK1.7和JDK1.8的差异、红黑树的使用、扩容和树化的条件、退化为链表的情况、索引的计算方法、hashcode和hash()方法的作用、数组容量的选择、Put方法的流程以及并发问题下的操作。文章还提到了扩容死链和数据错乱的问题,并探讨了key的设计要求。对于对Java面试中的HashMap问题感兴趣的读者,本文将为您提供一些有用的技术和经验。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
author-avatar
卟105932097
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有