zoukankan      html  css  js  c++  java
  • 关联数组/哈希表

    一、数组变量的限制

      前面讲到的数组变量中,可以通过下标访问其中的元素,但是它们有显著的缺陷,即很难记住那个元素存住什么内容。

    二、定义

      关联数组,哈希表,可以通过任意简单变量值来访问其元素。

      为了区分关联数组与普通数组,Perl使用%作为其首字符,而数组变量以@大头。

      与其他变量名一样,%后第一个字符必须是字母,后续字符可以为字母、数字或者下划线。

    三、增加元素

      创建一个关联数组最简单的方法是复制,$fruit{'banana'} = 1;

      这一特性使得关联数组很容易用于计数。

    四、创建关联数组

      可以用单个赋值语句创建关联数组

      %fruit = ("apples",17,"bananas",9,"oranges","none");

      %fruit = ("apples"=>17,"bananas"=>9,"oranges"=>"none"); #perl5,可读性更强

    五、从数组变量复制到关联数组

      @fruit = ("apples",17,"bananas",9,"oranges","none");
         %fruit = @fruit;

      反之,

      %fruit = ("grapes",11,"lemons",27);
         @fruit = %fruit;

    六、元素的增删

      $fruit{"lime"} = 1;

      delete ($fruit{"lime"});

      注意,

      1. 一定要使用delete函数删除关联数组的元素,这是唯一的方法;

      2. 一定不要对关联数组使用内嵌函数push pop shift splice,因为元素的位置是随机的。

    七、列出数组的索引和值

      keys()函数返回关联数组下标的列表

    %fruit = ("apples", 9,
              "bananas", 23,
              "cherries", 11);
    @fruitsubs = keys(%fruits);
    @fruitvalues = values(%fruits);

      内嵌函数values()返回关联数组值的列表
      PS:因为元素位置随机,所以值得次序可能不同。

    八、用关联数组循环
      foreach $holder (keys(%records)){
        $record = $records{$holder};
      }
      %records = ("Maris", 61, "Aaron", 755, "Young", 511);
      while (($holder, $record) = each(%records)) { #下标,值
        # stuff goes here
      }
    九、用关联数组创建数据结构
      1. 单链表
      %words = ("abel", "baker",
              "baker", "charlie",
              "charlie", "delta",
              "delta", "");
      $header = "abel";
      2. 结构
      
    struce{
      int field1;
      int field2;
      int field3; }mystructvar;
    %mystructvar = ("field1" , "" ,
          "field2" , "" ,
          "field3" , "" ,);
      3. 树

    • 因为每个子节点均为一个树,所以左/右子节点也称为左/右子树。(有时称左/右分支)
    • 第一个节点(不是任何节点的子节点的节点)称为树的根。
    • 没有孩子(子节点)的节点称为叶节点。
  • 相关阅读:
    使用手机对Tomcat发布的web应用进行测试
    JavaScript HTML DOM 事件
    JavaScript HTML DOM
    初学JavaScript
    Myeclipse中Servlet的创建
    RequestDispatcher.forward() 方法和HttpServletResponse.sendRedirect()方法的区别
    获取当前系统的时间转化成Long型
    JS实现时间格式化
    用小技巧来优化大数据量的网页
    文字超长自动省略,以...代替,CSS实现
  • 原文地址:https://www.cnblogs.com/yiyi-xuechen/p/4421946.html
Copyright © 2011-2022 走看看