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,是可以动态增长的)
不可变集合继承层次一栏图
image.png
可变集合继承层次一栏图
image.png
细节
Seq是Java中没有的,List归属于Seq.所以这里的List和Java不一样.
for循环里的
1 to 3
,就是基于IndexSeq下的VectorString
也是属于indexSeq
Queue和Stack
归属于LinearSeq
.即是线性
的,有头有尾
IndexSeq
和LinearSeq
.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 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦