数组操作

  • 初始化固定长度的数组
// 初始化长度为10的数组
val array = new Array[Int](10)
// 初始化创建含有hello与Scala的数组
val s = Array("hello","scala")
  • 创建可变的数组(类似java的集合)
Scala中创建长度可变的数组,类似与java中的ArrayList一样Scala提供了ArrayBuffer,下面是ArrayBuffer的用法:
// 创建集合等同于下面的new ArrayBuffer[Int]()
val b = ArrayBuffer[Int]()
new ArrayBuffer[Int]()
// 集合添加元素类似与java中的list.add()多次调用添加函数
b += (1, 2, 3, 4, 5, 6)
// 可以追加新的集合元素类似java中的list.addAll()
b ++=Array(7,8,9,10)
// 移除前//5个元素
b.trimStart(5)
/**
* 数组尾部删除或者添加元素是非常快,但是中间 * 插入元素或者移除元素,操作较慢
*/
val c = new ArrayBuffer[Int]()
c+=(1,2,3)
// 在索引2处插入元素6
c.insert(2,6)// ArrayBuffer(1, 2, 6, 3)
// 删除索引为2元素
c.remove(2)
// 删除索引1后一个元素
c.remove(1,1)
有时候创建元素,不知道存储多少元素可以创建数组缓存ArrayBuffer,然后调用toArray方法将缓冲区间转为Array(类似于java中StringBuffer.toString方法)
  • 遍历数组和数组缓冲
    val a = ArrayBuffer[Int]()
a+=(1,2,3,4,5,6)
//遍历数组(变量i取值从0到a.length-1)
for(i<- 0 until a.length) println(a(i))
println(a(i)
// 遍历偶数下标索引元素
for(i<- 0 until (a.length,2)) println(a(i))
// 倒着遍历索引
for(i<- (0 until a.length).reverse) println(a(i))
// yield元素填充
val result =for (e <- list) yield e *2
// 数组转换
val list = Array(1, 2, 3, 4)
// yield元素填充
val result = for (e <- list) yield e * 2
println(result.toBuffer)
// 舍弃偶数元素
val res = for (e <- list if e % 2 == 0) yield e
println(res.toBuffer)
// 也可以使用函数式编程使用filter和Map
val req = a.filter(_ % 2 == 0).map(2 * _)
}
  • Scala的常用算法
Scala中有计算求和和排序
val list = Array(1, 2, 3, 4)
// 求和,求数组最大值,排序,而排序并不会影响原有的数组
println(list.sum, list.max,list.sorted.toBuffer)
方法 方法描述
def append(elems:A*):Unit 方法接受多个类型为A的元素,例如b.append(1,2)将对b追加2个元素
def count(p:(A)=>Boolean):Int 方法接受一个布尔值表达式,例如a.count(_>0)将会统计多个正数

方法demo

    val list = Array(8, 5, 1, 2, 3, 4)
val bs = list.sorted.toBuffer
bs.append(1,2)
println(bs)
// 统计集合大于4的元素个数
println( bs.count(_ > 4))

最新文章

  1. ECMAScript 5中属性的特性值
  2. MongoDB3.0.x版本用户授权配置(单机环境)
  3. Linux守护进程的编程实现(转)
  4. SVN提交注意点
  5. 每天一个小算法(Shell sort5)
  6. 机器学习 —— 概率图模型(Homework: Representation)
  7. 关于set和map的用法
  8. 【算法系列学习三】[kuangbin带你飞]专题二 搜索进阶 之 A-Eight 反向bfs打表和康拓展开
  9. CentOS7.x机器安装Azure CLI2.0
  10. 转-Windows路由表配置:双网卡路由分流
  11. cannot send list of active checks to [ZabbixServerIp]: host [Zabbix server] not found
  12. 软件需求规格说明书(转自http://blog.csdn.net/li_canhui/article/details/6927540)
  13. MFC之自绘控件
  14. UVa 821 网页跳跃(Floyd)
  15. [Backbone]1. Module, View classed
  16. 移动端兼容 - faskclick.js
  17. UITableView取消选中颜色、常用操作
  18. jeesite快速开发平台(五)----用户-角色-部门-区域-菜单-权限表关系
  19. MongoDB客户端及监控工具
  20. Vue路由开启keep-alive缓存页面

热门文章

  1. 对于over-posting的防御
  2. 外部主机无法访问IIS发布的网站
  3. c#listbox使用详解和常见问题解决
  4. C#网络编程(二)应用篇
  5. [COGS 0407][NOIP 2009] 靶形数独
  6. 51nod 1437 迈克步
  7. TCP/IP 协议图
  8. js实现点击按钮显示某个区域 然后点击页面中任意其他位置,隐藏该区域
  9. Linux调整系统时间
  10. 问题:从键盘读取特定类型的数据(使用Scanner读取int类型)