• Scala核心编程_第11章_2节 数据结构-数组列表元祖


    数组

    Array是定长数组,ArrayBuffer是变长数组

    创建数组定长数组

    1.new方式定义数组

    中括号的类型就是数组的类型,

    val arr1 = new Array[Int](10)

    赋值,集合元素采用小括号访问

    arr1(1) = 7

    反编译

     

     2.apply方式定义数组

    val arr1 = Array(1, 2)

    apply方法:

     反编译

    增删改查数组

    • 索引访问

    集合元素采用小括号+索引的方式访问

    •  循环数组
    for (i <- arr) {
          println(i)
        }
    for (index <- arr.indices) {
    printf("arr[%d]=%s", index , arr(index) + " ")
    }

    变长数组

        val arr01 = new ArrayBuffer[Any](3)
        println(arr01.length) //0
        println("arr01.hash=" + arr01.hashCode())
        arr01.append(90.0,13) //
        println("arr01.hash=" + arr01.hashCode())
    
    1. 变长数组会为数组分配空间,但是用new创建是空的,虽然底层会分配空间
    2. 变长数组无论增删改查元素,不用改会导致对象的内存地址发生改变,那为什么hascode码前后不一致。
      • 变长数组重写了hashcode函数,在python中我们认为hashcode是代表内存地址的,但是在scala中,马丁喜欢对hashcode重写,让集合hashcode元素一致的集合hashcode相等,并不能代表内存值。

     

  • 相关阅读:
    实例变量和类变量
    Spring源码解读(一)
    linux shell学习三
    linux shell学习二
    linux shell学习一
    利用Zynq Soc创建一个嵌入式工程
    (转) 使用vivado创建工程 4[完结]
    (转) 使用vivado创建工程 3
    (转) 使用vivado创建工程 2
    (转) 使用vivado创建工程 1
  • 原文地址:https://www.cnblogs.com/wqbin/p/13154468.html
Copyright © 2020-2023  润新知