dtpfia3334 2010-06-28 16:38
浏览 88
已采纳

散列表VS关联数组

Recently I have read about hash-tables in a very famous book "Introduction to Algorithms". I haven't used them in any real applications yet, but want to. But I don't know how to start.
Can anyone give me some samples of using it, for example, how to realize a dictionary application (like ABBYY Lingvo) using hash-tables?
And finally I would like to know what is the difference between hash-tables and associative arrays in PHP, I mean which technology should I use and in which situations?
If I am wrong (I beg pardon) please correct me, because actually I am starting with hash-tables and I have just basic (theoretical) knowledge about them.
Thanks a lot.

  • 写回答

5条回答 默认 最新

  • dongzi4030 2010-06-28 16:40
    关注

    In PHP, associative arrays are implemented as hashtables, with a bit of extra functionality.

    However technically speaking, an associative array is not identical to a hashtable - it's simply implemented in part with a hashtable behind the scenes. Because most of its implementation is a hashtable, it can do everything a hashtable can - but it can do more, too.

    For example, you can loop through an associative array using a for loop, which you can't do with a hashtable.

    So while they're similar, an associative array can actually do a superset of what a hashtable can do - so they're not exactly the same thing. Think of it as hashtables plus extra functionality.

    Code examples:

    Using an associative array as a hashtable:

    $favoriteColor = array();
    $favoriteColor['bob']='blue';
    $favoriteColor['Peter']='red';
    $favoriteColor['Sally']='pink';
    echo 'bob likes: '.$favoriteColor['bob']."
    ";
    echo 'Sally likes: '.$favoriteColor['Sally']."
    ";
    //output: bob likes blue
    //        Sally likes pink
    

    Looping through an associative array:

    $idTable=array();
    $idTable['Tyler']=1;
    $idTable['Bill']=20;
    $idTable['Marc']=4;
    //up until here, we're using the array as a hashtable.
    
    //now we loop through the array - you can't do this with a hashtable:
    foreach($idTable as $person=>$id)
        echo 'id: '.$id.' | person: '.$person."
    ";
    
    //output: id: 1 | person: Tyler
    //        id: 20 | person: Bill
    //        id: 4 | person: Marc
    

    Note especially how in the second example, the order of each element is maintained (Tyler, Bill Marc) based on the order in which they were entered into the array. This is a major difference between associative arrays and hashtables. A hashtable maintains no connection between the items it holds, whereas a PHP associative array does (you can even sort a PHP associative array).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿