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 ...
随机推荐
- LBP算子
LBP算子特点 LBP(Local Binary Pattern),即局部二值模式,属于一种图像预处理算法,具有光照不变性和旋转不变性. 我目前做的项目是人脸表情识别,采用这种算法可以减少光照和人脸旋 ...
- Til the Cows Come Home(spfa做法)
题目题目描述贝茜在谷仓外的农场上,她想回到谷仓,在第二天早晨农夫约翰叫她起来挤奶之前尽可能多地睡上一觉.由于需要睡个好觉,贝茜必须尽快回到谷仓.农夫约翰的农场上有N(2≤N≤1000)个路标,每一个路 ...
- mysql的索引方法btree和hash的区别
原文链接: http://www.91w.net/database/330.html 1. Hash索引: Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引 ...
- java oop第15章_Socket网络编程
一. TCP/IP协议(Transmission Control Protocol/Internet Protocol)传输控制协议/Internet协议,是通信领域的基础.核心协议, 其他的协议 ...
- 74HC595点亮8个LED灯
一.原理介绍 595有两个寄存器,都是8位的,如下所示: 595是串入并出带有锁存功能移位寄存器,它的使用方法简单: - - 在正常使用时 /SCLR接高电平,/G接低电平. - - 从SER每输 ...
- Linux 进程间通信 信号(signal)
1. 概念: 1)信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式 2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件. 3)如果 ...
- BCZM : 1.9
有n个学生参加见面会,分别对m个研究组中的若干个感兴趣,为了满足所有学生的要求,每个学生都能参加自己感兴趣的见面会,如果每个见面会的时间为t,如何安排才能使得所有见面会的总时间最短? 分析: 先建立模 ...
- python 爬取豆瓣电影短评并wordcloud生成词云图
最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站 [实验名称] 爬取豆瓣电影<千与千寻>的评论并生成词云 1. 利用爬虫获得电影评论的文本数据 2. 处理文本数据生成词云图 第一步, ...
- 初始化css样式
html,body,div,ul,li,ol,a,input,textarea,p,dl,dt,dd{margin:0;padding:0;} ul li{list-style: none;} a{t ...
- zabbix active模式以及自定义key not Supported的解决
zabbix active模式 active模式适用场景 zabbix server端无法直连agent端,比如agent为内网机器,仅有内网ip,没有公网ip,但是内网机器能够访问server端 a ...