scala中ArrayBuffer简单使用
import scala.collection.mutable.ArrayBuffer /**
* 与Array区别:
* 1、Array是不可变的,不能直接地对其元素进行删除操作,只能通过重赋值或过滤生成新的Array的方式来删除不要的元素
* 2、ArrayBuffer是可变的,提供了很多元素的操作,包括删除的操作
* 他们相互转化很方便,调用toArray 、toBuffer方法即可
*/
object ArrayBufferUse { def main(args: Array[String]): Unit = { val b = ArrayBuffer[Int]()
b+= 1;
b+= (2,3,4,5,6)
b.remove(1) // 删除元素
println(b.mkString(",")) // 变成Array
val ary = b.toArray
println(ary.mkString(",")) println(ary.sum)
println(ary.max)
println(ary.min)
println(ary.toBuffer.toString) // yield
var b1 = for(ele <- ary) yield ele * ele
println(b1.mkString(",")) val ab = ArrayBuffer[Int]()
ab +=(2,3,4,5,6) val c = for(ele <- ab) yield ele * ele
println(c.mkString(",")) // 找出来偶数
val d1 = for(ele <- ab if ele % 2 == 0) yield ele * ele
println(d1.mkString(",")) // 函数式编程 _ 表示元素
println(d1.filter(_ % 2 == 0).map(_ * 3).mkString(",")) removeNegativeBad() removeNegativeGood() } def removeNegativeBad()={
val ab = new ArrayBuffer[Int]()
ab += (1,2,3,4,5,-1,-2,-3) var findNegative = false
var index = 0
var abLen =ab.length
while (index < abLen) {
if(ab(index) >=0 ){
index += 1
}else{
if(!findNegative){
findNegative = true;
index+=1
}else{
ab.remove(index)
abLen -=1
}
}
}
println(ab.mkString(","))
} def removeNegativeGood()={
val ab = ArrayBuffer[Int]()
ab+=(1,2,3,4,-1,-2,-3,-4,-5)
var foundNegative = false
val keepIndex = for (i <- 0 until ab.length if !foundNegative || ab(i) >= 0) yield {
if(ab(i) < 0 ) foundNegative = true
i
}
for (i <- 0 until keepIndex.length){
ab(i) = ab(keepIndex(i))
}
ab.trimEnd(ab.length - keepIndex.length)
println(ab)
} }
scala中ArrayBuffer简单使用的更多相关文章
- scala中Array简单实用
/** * 在scala中数组的使用 * 和java很类似,初始化后,长度就固定了,而且元素全部根据其类型初始化 * */ object arrayUse { def main(args: Array ...
- scala中Tuple简单使用
/** * Tuple简单使用记录 * 最大22个参数 */ object TupleUse { def main(args: Array[String]): Unit = { // 简单Tuple ...
- scala中Trait简单使用
trait Log { def log(message:String) = println("log:" + message) } /** * 为实例混入trait * */ tr ...
- scala中函数简单使用记录
object funcHighLevel { def main(args: Array[String]): Unit = { // 创建一个匿名函数 val sayFunc = (name: Stri ...
- Scala中的IO操作及ArrayBuffer线程安全问题
通过Scala对文件进行读写操作在实际业务中应用也比较多,这里介绍几种常用的方式,直接上代码: 1. 从文件中读取内容 object Main { def loadData(): Array[Stri ...
- (转)Scala中协变(+)、逆变(-)、上界(<:)、下界(>:)简单介绍
看源码的时候看到: trait ExtensionId[T <: Extension] { 没见过这个符号啊<: Scala上界(<:)和下界(>:) 1) U >: T ...
- scala中的闭包简单使用
object Closure { /** * scala中的闭包 * 函数在变量不处于其有效作用域内,还能够对变量进行访问 * * @param args */ def main(args: Arra ...
- scala 中List的简单使用
/** * scala 中List的使用 * */ object ListUse { def main(args: Array[String]): Unit = { def decorator(l:L ...
- 2. scala中的数组
一. 数组声明 定长数组 scala> new Array[String](5) res1: Array[String] = Array(null, null, null, null, null ...
随机推荐
- python#父与子的编程之旅#第十四章
1. 为BankAccount 建立一个类定义.它应该有一些属性,包括账户名(一个字符串).账号(一个字符串或整数)和余额(一个浮点数),另外还要有一些方法显示余额.存钱和取钱. class Bank ...
- xinetd - 扩展的互联网服务守护进程
总览 SYNOPSIS xinetd [options] 描述 DESCRIPTION xinetd 执行与 inetd 相同的任务:它启动提供互联网服务的程序.与在系统初始化时启动这些服务器,让它们 ...
- vue之vue-router嵌套路由
1.定义路由 routes: [ { path: '/product', //第一层路由 name: 'product', component: Vproductcontent,//父组件渲染的是子组 ...
- jQuery实现enter键登录
在登录时,使用快捷键登录时常用的方法,其中 loginReq()方法为请求登录检索的方法 $("#login").click(function(){ loginReq(); }); ...
- 从psd图中将图层导出成单独文件
- leetcood学习笔记-102-二叉树的层次遍历
题目描述: 方法一; class Solution(object): def levelOrder(self, root): """ :type root: TreeNo ...
- Android中使用占位符
Android中占位符的使用 有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法. strings.xml中节点是支持占位符的,如下所示: < ...
- NX二次开发-UFUN创建块UF_MODL_create_block
NX9+VS2012 #include <uf.h> #include <uf_modl.h> UF_initialize(); UF_FEATURE_SIGN Sign = ...
- hexo next主题深度优化(九),给博客加入主题,护眼主题,护眼色。
文章目录 背景 效果 码 _layout.swig custom.styl eye.js 引用eye.js 直接引用 main.js pjax的函数中重写 个人博客:https://mmmmmm.me ...
- 《DSP using MATLAB》Problem 8.45
代码: %% ------------------------------------------------------------------------ %% Output Info about ...