Scala学习——array与arraybuffer的区别(初)
1.由于Array是不可变的,所以不能直接地对其元素进行删除操作,只能通过重赋值或过滤生成新的Array的方式来删除不要的元素。
而ArrayBuffer是可变的,本身提供了很多元素的操作,当然包括删除操作。( 如果你需要在Array和ArrayBuffer之间转换,那么分别调用toArray()和toBuffer()方法即可)
object DeleteOperators extends App { /*Array的size是不可以改变的,所以没有直接删除其元素的方法,
只能通过修改其元素值或者用另外的Array来取要的元素,过滤不要的元素,说白了就是通过过滤来删除Array中的元素,生存新的Array.
* */
val a = Array("apple", "banana", "cherry")
a(0)=""
a(1)=null
a.foreach(println)
val x = Array("apple", "banana", "cherry")
val c = x.filter(!_.contains("apple"))
c.foreach(println) /*ArrayBuffer是可变的序列,也就是说它的size是可改变的,所以可以直接删除它的元素,它提供了响应的方法.*/
val b = ArrayBuffer('a','b','c','d','e','f','g','h','i','j','k','l')
b -= 'a' //删除1个指定元素;
b -= ('b','c') //删除多个指定元素
b --= Seq('d','e') //通过1个集合来删除元素(可以用Array,Set)
b.remove(0) //通过index来删除元素
b.remove(1,2) //通过index来删除多个元素
b.clear() //清除所有元素
println(b) }
2.yield的使用(产生一个新的Array)
1 object HelloWorld {
2 def main(args: Array[String]) {
3 val a = Array(2, 3, 5, 6);
4 val result = for (elem <- a) yield elem * 2
5 result.copyToArray(a)
6 for (elem <- a) {
7 print(elem + ",") //output:4,6,10,12,
8 }
9 }
10 }
看一个例子:
import scala.collection.mutable.ArrayBuffer
object test1 {
def main(args: Array[String]) {
//移除除第一个负数之外的所有负数
val a = Array(1, -2, 3, -5, 4, -5)
var first = true
//首先收集需要保留的数,返回的结果是一个vector集合
val indexs = for (i <- 0 until a.length if first || a(i) >= 0) yield {
if (a(i) < 0) first = false; a(i)
}
print(indexs)
} }
Scala学习——array与arraybuffer的区别(初)的更多相关文章
- 【Todo】【转载】Scala中Array, List, Tuple的区别
参考了这篇文章: https://my.oschina.net/u/1034176/blog/512314 1. 在Scala 2.7中,Array.List都不能混合类型,只有Tuple可以:而在S ...
- Scala 学习之路(四)—— 数组Array
一.定长数组 在Scala中,如果你需要一个长度不变的数组,可以使用Array.但需要注意以下两点: 在Scala中使用(index)而不是[index]来访问数组中的元素,因为访问元素,对于Scal ...
- Scala 数组操作之Array、ArrayBuffer以及遍历数组
ArrayBuffer 在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer. // 如果不想每次都使用全限定名,则可以预先导入Array ...
- 【Todo】【读书笔记】大数据Spark企业级实战版 & Scala学习
下了这本<大数据Spark企业级实战版>, 另外还有一本<Spark大数据处理:技术.应用与性能优化(全)> 先看前一篇. 根据书里的前言里面,对于阅读顺序的建议.先看最后的S ...
- Scala学习教程笔记一之基础语法,条件控制,循环控制,函数,数组,集合
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变 ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
- scala学习之第二天:可变容器与不可变容器的特性与应用
1.具体的不可变集合实体类 List(列表) 是一种有限的不可变序列式.提供了常数时间的访问列表头元素和列表尾的操作,并且提供了常数时间的构造新链表的操作,该操作将一个新的元素插入到列表的头部.其他许 ...
- Scala学习(三)----数组相关操作
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...
- scala学习——(1)scala基础(下)
(七)定长数组 val array_name = new Array[T](length) val array_name = Array("","") 通过() ...
随机推荐
- 安卓ADT离线安装
http://jingyan.baidu.com/article/3aed632e66858770108091bf.html
- EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见
问题反馈 最近在线上遇到一位老朋友咨询关于EasyPlayer播放器的事情,大概现象就是分别用EasyPlayer和vlc播放大华摄像机的RTSP流,流地址是:rtsp://admin:admin12 ...
- NHibernate学习系列一
NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映 ...
- Gin Web框架简单介绍
翻译自: https://github.com/gin-gonic/gin/blob/develop/README.md Gin Web框架 branch=master"> Gin是用 ...
- Linux入门基础(二)——cp、nano命令
- [2018-12-07]用ABP入门DDD
前言 ABP框架一直以来都是用DDD(领域驱动设计)作为宣传点之一.但是用过ABP的人都知道,ABP并不是一个严格遵循DDD的开发框架,又或者说,它并没有完整实现DDD的所有概念. 但是反过来说,认真 ...
- DOM的介绍
一 . DOM 介绍 什么是DOM DOM:文档对象模型.DOM 为文档提供了结构化表示,并定义了如何通过脚本来访问文档结构.目的其实就是为了能让js操作html元素而制定的一个规范. DOM就是由节 ...
- ubuntu上swift开发学习1
学习目的:通过构建一个web应用的实践过程来学习swift.会使用到Perfect框架建立一个web应用(Perfect是swift的一个web框架). 这一篇介绍环境搭建 学习资源: 环境搭建:ht ...
- 加州小学grade1,学习计划
Visual vocabulary Grammar Spelling Maths Chapter 1 Patterns and Number SenseChapter 2Understanding A ...
- awk添加文本到指定内容后一行
一下操作会输入到文件末尾,,测试不全面,还不如使用echo解决呢... 1. 要添加的文本内容如下: 文件名:code_list html</>!@$%^^ fdsafds <> ...