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简单使用的更多相关文章

  1. scala中Array简单实用

    /** * 在scala中数组的使用 * 和java很类似,初始化后,长度就固定了,而且元素全部根据其类型初始化 * */ object arrayUse { def main(args: Array ...

  2. scala中Tuple简单使用

    /** * Tuple简单使用记录 * 最大22个参数 */ object TupleUse { def main(args: Array[String]): Unit = { // 简单Tuple ...

  3. scala中Trait简单使用

    trait Log { def log(message:String) = println("log:" + message) } /** * 为实例混入trait * */ tr ...

  4. scala中函数简单使用记录

    object funcHighLevel { def main(args: Array[String]): Unit = { // 创建一个匿名函数 val sayFunc = (name: Stri ...

  5. Scala中的IO操作及ArrayBuffer线程安全问题

    通过Scala对文件进行读写操作在实际业务中应用也比较多,这里介绍几种常用的方式,直接上代码: 1. 从文件中读取内容 object Main { def loadData(): Array[Stri ...

  6. (转)Scala中协变(+)、逆变(-)、上界(<:)、下界(>:)简单介绍

    看源码的时候看到: trait ExtensionId[T <: Extension] { 没见过这个符号啊<: Scala上界(<:)和下界(>:) 1) U >: T ...

  7. scala中的闭包简单使用

    object Closure { /** * scala中的闭包 * 函数在变量不处于其有效作用域内,还能够对变量进行访问 * * @param args */ def main(args: Arra ...

  8. scala 中List的简单使用

    /** * scala 中List的使用 * */ object ListUse { def main(args: Array[String]): Unit = { def decorator(l:L ...

  9. 2. scala中的数组

    一. 数组声明 定长数组 scala> new Array[String](5) res1: Array[String] = Array(null, null, null, null, null ...

随机推荐

  1. mysql-python不支持python3

    使用Mysqlclient pip3 install Mysqlclient

  2. 52-Ubuntu-打包压缩-2-打包/解包

    tar是Linux中最常用的备份工具,此命令可以把一系列文件打包到一个大文件中,也可以把一个打包的大文件恢复成一系列文件. 序号 命令 作用 01 tar -cvf 打包文件.tar 被打包文件 打包 ...

  3. Neo4j Cypher查询语言详解

    Cypher介绍 "Cypher"是一个描述性的图形查询语言,允许不必编写图形结构的遍历代码对图形存储有表现力和效率的查询.Cypher还在继续发展和成熟,这也就意味着有可能会出现 ...

  4. OpenResty实现限流的几种方式

      在开发 api 网关的时,做过一些简单的限流,比如说静态拦截和动态拦截:静态拦截说白了就是限流某一个接口在一定时间窗口的请求数.用户可以在系统上给他们的接口配置一个每秒最大调用量,如果超过这个限制 ...

  5. springMvc框架之Restful风格

    method: @Controller @RequestMapping("/test") public String MyController{ @RequestMapping(& ...

  6. debian 下设置Ctrl+Alt+T快捷键打开终端

    在设置->键盘->快捷键->自定义快捷键->添加  名称:Terminal 命令:gnome-terminal   再右上边点击后 按Ctrl +Alt +T

  7. 使用jQuery对象

    1基本行为 * size()/length: 包含的DOM元素个数 * [index]/get(index): 得到对应位置的DOM元素 * each(): 遍历包含的所有DOM元素 * index( ...

  8. Ruby 类和对象

    Ruby 类和对象 Ruby 是一种完美的面向对象编程语言.面向对象编程语言的特性包括: 数据封装 数据抽象 多态性 继承 这些特性将在 面向对象的 Ruby 中进行讨论. 一个面向对象的程序,涉及到 ...

  9. BZOJ 1697: [Usaco2007 Feb]Cow Sorting牛排序(置换+贪心)

    题面 Description 农夫JOHN准备把他的 N(1 <= N <= 10,000)头牛排队以便于行动.因为脾气大的牛有可能会捣乱,JOHN想把牛按脾气的大小排序.每一头牛的脾气都 ...

  10. NX二次开发-如何判断孔特征和边倒圆是否在凸台特征后面?

    在建模的时候,部件导航器里的特征按建模顺序是有特征时间戳记的. 我们可以根据特征时间戳记的名字来判断哪个特征在前,哪个在后. #include <uf.h> #include <uf ...