为了账号安全,请及时绑定邮箱和手机立即绑定

Scala(七)-①-数据结构-集合-Array和List和ListBuffer

标签:
Premiere

Java中不可变集合

  • 不可变集合概念(java为例)

public class ImmutableDemo01ForJava {   public static void main(String[] args) {       // 1.不可变集合,内容可变,旦数组本身不能动态增长
       int []nums = new int[3];
       nums[2] = 2;       //  nums[3] = 1  错误

       // 2.可变集合,集合本省能够动态增长ArrayList arrayList = new ArrayList<String>();
       arrayList.add("t1");
       System.out.println(arrayList.hashCode());
       arrayList.add("t2");
       System.out.println(arrayList.hashCode());
   }
}

Scala中的集合

特点

  • Scala同时支持不可变集合可变集合,不可变集合可以安全的并发访问

两个主要的包:
不可变集合:scala.collection.immutable
可变集合: scala.collection.mutable

  • Scala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本

  • Scala的集合有三大类:序列Seq集Set映射Map,所有的集合都扩展自Iterable特质,在Scala中集合有可变(mutable)和不可变(immutable)两种类型.

举个例子

  • 不可变集合: scala不可变集合,就是这个集合本身不能动态变化.(类似java的数组,是不可以动态增长的)

  • 可变集合:可变集合,就是这个集合本身可以动态变化的.(比如:ArrayList,是可以动态增长的)

不可变集合继承层次一栏图

webp

image.png

可变集合继承层次一栏图

webp

image.png

细节

  • Seq是Java中没有的,List归属于Seq.所以这里的List和Java不一样.

  • for循环里的1 to 3,就是基于IndexSeq下的Vector

  • String也是属于indexSeq

  • Queue和Stack归属于LinearSeq.即是线性的,有头有尾

  • IndexSeqLinearSeq.IndexSeq是基于索引的序列,LinearSeq是线性序列

① 数组

Why

Scala同时支持不可变集合可变集合.不可变集合是线程安全的.

  • 队列的应用场景
    推荐系统要用户最近浏览的10个商品.

How

  • 学习集合的创建、修改、删除、增加

定长数组-Array

创-方式一-new Array
/**
  * @author sweetcs
  */object ArrayDemo01 {  def main(args: Array[String]): Unit = {    // 默认为零
    var arr = new Array[Int](4)
    println("数组长度=" + arr.length)
    println("循环遍历数组:")    for (item <- arr) {
      println(item)
    }

    arr(3)=1
    
    println("循环遍历数组:")    for (item <- arr) {
      println(item)
    }

  }
}
创-方式二-Array
/**
  * @author sweetcs
  */object ArrayDemo02ForApply {  def main(args: Array[String]): Unit = {    // 数组元素的类型时Any.一旦定义就不可在更改
    var array = Array(1, 2, "beijing")    // 数组元素的类型时Int.一旦定义就不可在更改
    var arrayOfInts = Array(1,2)    for (item <- array) {
      println(item)
    }    // 传统for循环基于索引遍历
    var len = array.length    for (i <- 0 until len) {
      printf("%s\t", array(i))
    }
  }
}



作者:sixleaves
链接:https://www.jianshu.com/p/bdf90fc486ed


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消