Scala108-Array常用方法总结

网友投稿 823 2022-11-10

Scala108-Array常用方法总结

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小时内删除侵权内容。

上一篇:ScalaNote12-特质trait
下一篇:springboot整合redis实现发送邮箱并验证
相关文章

 发表评论

暂时没有评论,来抢沙发吧~