Scala108-Array常用方法总结

之前学习韩老师Scala课程中,做过一些笔记,见https://blog.csdn.net/wendaomudong_l2d4/article/details/104808712。部分用法没涉及到,重新做个整理,不定时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) = 1
arr(1) = 2
arr(2) = 3
arr(3) = 4
arr(4) = 5





arr0: 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
arr0
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 = 4
arr03.min = 1





arr03: 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 于南京市江宁区九龙湖

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值