数据结构和算法在计算机科学里,有非常重要的地位。此系列文章尝试使用 Golang 编程语言来实现各种数据结构和算法,并且适当进行算法分析。
联系作者:
Github: https://github.com/hunterhug
知乎:https://www.zhihu.com/people/chen-xing-xing-57-62-13
系列文章首发于:https://goa.lenggirl.com。
联系作者:
Github: https://github.com/hunterhug
知乎:https://www.zhihu.com/people/chen-xing-xing-57-62-13
系列文章首发于:https://goa.lenggirl.com。
2021年09月27日
2021年09月27日 某些教程不区分普通红黑树和左倾红黑树的区别,直接将左倾红黑树拿来教学,并且称其为红黑树,因为左倾红黑树与普通的红黑树相比,实现起来较为简单,容易教学。在这里,我们区分开左倾红黑树和普通红黑树。
Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的高级程序设计语言,Java 当初诞生的时候,正是上世纪 90 年代末互联网兴起的时代,在企业应用开发中存在几个问题,一是以 IBM,SUN 和 HP 的 UNIX 服务器和大型机为主的异构环境,C/C++ 和其它语言编写的应用跨平台支持和移植比较困难,二是基于 CGI 和其它技术的网络应用从开发效率和功能性角度来看都不够理想,三是 C/C++在当时是主流编程语言,门槛高、易出错、对经验要求很高,而 Java 简单易学、安全可靠,并且一次编写到处运行,再加上 Applet、Servlet 和 JSP 技术,解决了这些痛点,满足了当时互联网程序设计和运维的要求,伴随着互联网的发展一下子就脱颖而出并长期占据主流地位。
2021年09月30日
2021年09月30日
2021年09月30日
2021年09月30日
2021年09月30日 Java 是面向对象的编程语言,有时需要保存对象,并在下次使用时可以顺利还原该对象。由于这种需求很常见,所以 Java API 对此提供了支持,添加相关程序代码到标准类库中,并将保存和还原的过程称之为“对象序列化”。Java SE7 文档中将与对象序列化的相关内容做了详细表述,将其称为: “Java 对象序列化规范”(Java Object Serialization Specification)。
2021年09月30日 Jackson 是 Java JSON API,它提供了几种使用 JSON 的方式。Jackson 是目前最流行的 Java JSON API 之一。您可以在这里找到 Jackson:https://github.com/FasterXML/jackson
2021年09月30日 GSON 是 Google 的 JSON 解析器和 Java 生成器。Google 开发了 GSON 供内部使用,但后来将其开源。GSON 相当容易使用,但我认为它不如 Jackson 优雅。在本 GSON 教程中,我将指导您如何使用 GSON 将 JSON 解析为 Java 对象,以及将 Java 对象序列化为 JSON。GSON 包含多个可用于 JSON 的 API。本教程介绍了 Gson 组件,该组件将 JSON 解析为 Java 对象,或从 Java 对象生成 JSON。除 Gson 组件外,GSON 在 GSON JsonReader 组件中还具有拉式解析器。
2021年09月30日 FastJson 上由阿里的一位工程师开发并开源的。
2021年09月30日 正则表达式定义了字符串的模式,正则表达式可以用来搜索、编辑或处理文本;正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。
2021年09月30日 字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。
2021年09月30日 HashSet 也是 Java Collection Framework 的重要成员,是 Set 接口的常用实现类,但其与 HashMap 有很多相似之处。对于 HashSet 而言,其采用 Hash 算法决定元素在 Set 中的存储位置,这样可以保证元素的快速存取;对于 HashMap 而言,其将 key-value 当成一个整体(Entry 对象)来处理,其也采用同样的 Hash 算法去决定 key-value 的存储位置从而保证键值对的快速存取。虽然 HashMap 和 HashSet 实现的接口规范不同,但是它们底层的 Hash 存储机制完全相同。实际上,HashSet 本身就是在 HashMap 的基础上实现的。
2021年09月30日
2021年09月30日
2021年09月30日 对于包含容器类型的程序设计语言来说,基本上都会涉及到 hashCode。在 Java 中也一样,hashCode 方法的主要作用是为了配合基于哈希的集合一起正常运行,这样的哈希集合包括 HashSet、HashMap 以及 HashTable。
当向集合中插入对象时,如何判别在集合中是否已经存在该对象,也许大多数人都会想到调用 equals 方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用 equals 方法去逐一比较,效率必然是一个问题。此时 hashCode 方法的作用就体现出来了,当集合要添加新的对象时,先调用这个对象的 hashCode 方法,得到对应的 hashcode 值,实际上在 HashMap 的具体实现中会用一个 table 保存已经存进去的对象的 hashcode 值,如果 table 中没有该 hashcode 值,它就可以直接存进去,不用再进行任何比较了;如果存在该 hashcode 值,就调用它的 equals 方法与新元素进行比较,相同的话就不存了,不相同就哈希其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用 equals 方法的次数就大大降低了
通俗来说,Java 中的 hashCode 方法就是根据一定的规则将与对象相关的信息,比如对象的存储地址,对象的字段等,映射成一个数值,这个数值称作为哈希值。
当向集合中插入对象时,如何判别在集合中是否已经存在该对象,也许大多数人都会想到调用 equals 方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用 equals 方法去逐一比较,效率必然是一个问题。此时 hashCode 方法的作用就体现出来了,当集合要添加新的对象时,先调用这个对象的 hashCode 方法,得到对应的 hashcode 值,实际上在 HashMap 的具体实现中会用一个 table 保存已经存进去的对象的 hashcode 值,如果 table 中没有该 hashcode 值,它就可以直接存进去,不用再进行任何比较了;如果存在该 hashcode 值,就调用它的 equals 方法与新元素进行比较,相同的话就不存了,不相同就哈希其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用 equals 方法的次数就大大降低了
通俗来说,Java 中的 hashCode 方法就是根据一定的规则将与对象相关的信息,比如对象的存储地址,对象的字段等,映射成一个数值,这个数值称作为哈希值。
2021年09月30日
2021年09月30日
2021年09月30日
前一页
后一页