科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件最基础的数据结构

最基础的数据结构

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将讨论实际编程最经常使用的三种数据结构:字符串、数组和Hash表,比较它们在不同语言中的实现思路,并涉及它们的使用技巧。

作者:左轻侯 来源:blog 2007年7月27日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
 HashMap和hash函数也是剥离的,但使用了另一种思路。在Java中,根类型Object定义了hashCode()和equals()方法,由于任何类型的对象都派生自Object,所以它们都自动继承了这两个方法。用户自定义的类应该重载这两个方法,以实现自己的hash函数和比较函数。如果这两个函数没有被重载,Java会使用Object的hashCode()和equals()方法,它们的默认实现分别是返回对象的地址,以及比较两个对象的地址是否相等。
   在PHP中,数组和Hash表合而为一了。从语法上看,PHP中并没有Hash表这样的容器,而只支持数组。不同的是,PHP中的数组不但支持使用数字下标进行索引,而且支持使用字符串下标进行索引。换句话说,PHP中的数组支持使用键-值对作为数组的元素,并且可以使用键来进行索引(键必须为integer类型或string类型)。而且,PHP中的数组支持自动增长和嵌套。如下例:
  
   $arr = array(1 => 12, "akey" => "this is a word");
   echo $arr[1]; // 得到12
   echo $arr["akey"]; // 得到"this is a word"
  
   PHP没有提供自定义hash函数的接口。由于它不接受integer和string以外的类型作为键,这一点事实上也没有必要。
  
   结束语
   当接受这篇文章的约稿时,我认为这是一项比较简单的工作。因为这三种数据结构实在是太基础了,所以我甚至怀疑是否能够写出足够长的篇幅。很快我就发现了自己的错误。光是字符串就够写一本书的。
   在撰写本文的过程,我回顾了学习过的大部分编程语言,重温了许多经典书籍中的相关章节,启动了各种IDE编写测试用例。我接触到了大量未知的领域,至今我仍然在猜测许多问题的实现细节。这从另外一个方面说明了基本数据结构的重要性:即使在我们最熟悉的事物中,也隐藏着极为深刻的原理。
  
   参考文献:
   K&R,C程序设计语言,第二版
   Bjarne Stroustrup,C++程序设计语言,第三版
   Koenig & Moo,C++沉思录
   Delphi Language Guide
   Bruce Eckel,Thinking in Java,第二版
   McLaughlin & Flanagan,Java 5.0 Tiger程序高手秘笈
   Jesse Liberty,Programming C#
   W. Gilmore,PHP与MySQL 5程序设计
   Lutz & David Ascher,Learning Python,第二版
   Alex Martelli,Python in a Nutshell,第二版
   Introduction to Algorithms,第二版
   殷人昆等,数据结构(用面向对象和C++描述)
   Joel Spolsky,Joel说软件

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章