轻量级前端框架助力开发者提升项目效率与性能
869
2022-11-10
Scala108-Array常用方法总结
之前学习韩老师Scala课程中,做过一些笔记,部分用法没涉及到,重新做个整理,不定时Update~ 主要内容:
增改删查排序
增改删查
Array本身不可以增删元素,ArrayBuffer可以,具体不赘述,之前的笔记里有涉及。
查:可以用(index)的方式访问对应下标的元素改:也可以指定下标修改元素值位置索引从0开始
新建
Array的新建没啥好说的,Array(item1,item2)即可
查单个元素
val arr0 = Array(1,2,3,4,5)// until左闭右开,to左闭右闭for (i<-0 until arr0.length){ println(s"arr($i) = "+arr0(i))}
arr(0) = 1arr(1) = 2arr(2) = 3arr(3) = 4arr(4) = 5arr0: Array[Int] = Array(1, 2, 3, 4, 5)
查多个元素
其实是想说数组的分片,即如果取多个元素
slice函数可以提供分片功能参数为元素位置索引slice(a,b)和python分片list类似,从a取,一共取b-a个元素
arr0.slice(0,3)
res33: Array[Int] = Array(1, 2, 3)
改
这里的改指修改制定位置的元素
arr0(0)=666
res36: Array[Int] = Array(666, 2, 3, 4, 5)
合并
虽然Array没有增删功能,但是可以合并两个Array赋值给另一个Array
val arr1 = Array(0,1)val arr2 = Array(2,3)arr1++arr2
arr1: Array[Int] = Array(0, 1)arr2: Array[Int] = Array(2, 3)res37: Array[Int] = Array(0, 1, 2, 3)
排序
Array的排序逻辑比较简单,一般sort的逻辑无非指定排序的字段,以及升序还是降序。Array中则需要考虑对应的元素类型,看几个例子。
Array(Tuple)排序
Array中是元组,根据元组的第几个元素进行排序。有几个点需要注意:
指定元组的元素,通过tuple._1指定,索引从1开始升降序,用正负号可以替代sortBy默认升序排序我们默认一般情况下的排序都是对数值进行排序
val arr01 = Array((1,2),(3,1))// 根据元组的第二个元素升序排序// 这里第一个_指代每一个Array的元素,._2表示元组的第二个元素arr01.sortBy(_._2)
arr01: Array[(Int, Int)] = Array((1,2), (3,1))res4: Array[(Int, Int)] = Array((3,1), (1,2))
// 根据元组的第二个元素降序排序arr01.sortBy(-_._2)
res5: Array[(Int, Int)] = Array((1,2), (3,1))
Array(Array)排序
整体逻辑和前面的一样,无非取元素的逻辑变了,另外Array的索引从0开始。直接看代码~
val arr02 = Array(Array(1,2),Array(3,1))// 根据子元素(Array)的第二个元素升序排序arr02.sortBy(_(1))
arr02: Array[Array[Int]] = Array(Array(1, 2), Array(3, 1))res7: Array[Array[Int]] = Array(Array(3, 1), Array(1, 2))
// 根据子元素(Array)的第二个元素升序排序arr02.sortBy(-_(1))
res8: Array[Array[Int]] = Array(Array(1, 2), Array(3, 1))
获取最大最小值
如果Array的子元素是数值(Int、Double),可以直接用max或者min如果子元素还是集合,可以用maxBy和minBy
val arr03 = Array(1,2,3,4)println("arr03.max = "+arr03.max)println("arr03.min = "+arr03.min)
arr03.max = 4arr03.min = 1arr03: Array[Int] = Array(1, 2, 3, 4)
val arr04 = Array(Array(1,2),Array(3,1))// arr04所有子元素中的第一个位置数值最大的arr04.maxBy(_(0))
arr04: Array[Array[Int]] = Array(Array(1, 2), Array(3, 1))res20: Array[Int] = Array(3, 1)
arr04.minBy(_(0))
res21: Array[Int] = Array(1, 2)
2020-03-24 于南京市江宁区九龙湖
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~