zoukankan      html  css  js  c++  java
  • 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相等,并不能代表内存值。

     

  • 相关阅读:
    jQuery实现 自动滚屏操作
    jQuery实现全选、全不选以及反选操作
    读曾国藩
    把时间当作朋友 之感知时间
    把时间当作朋友4未知永远存在
    Android N 设置中语言列表介绍
    如何编译ICU资源
    idea常用快捷键
    shell 笔记
    Json笔记
  • 原文地址:https://www.cnblogs.com/wqbin/p/13154468.html
Copyright © 2011-2022 走看看