zoukankan      html  css  js  c++  java
  • Scala学习——array与arraybuffer的区别(初)

    1.由于Array是不可变的,所以不能直接地对其元素进行删除操作,只能通过重赋值或过滤生成新的Array的方式来删除不要的元素。

    而ArrayBuffer是可变的,本身提供了很多元素的操作,当然包括删除操作。( 如果你需要在Array和ArrayBuffer之间转换,那么分别调用toArray()和toBuffer()方法即可

     1 object DeleteOperators extends App {
     2 
     3   /*Array的size是不可以改变的,所以没有直接删除其元素的方法,
     4     只能通过修改其元素值或者用另外的Array来取要的元素,过滤不要的元素,说白了就是通过过滤来删除Array中的元素,生存新的Array.
     5   * */
     6   val a = Array("apple", "banana", "cherry")
     7   a(0)=""
     8   a(1)=null
     9   a.foreach(println)
    10   val x = Array("apple", "banana", "cherry")
    11   val c = x.filter(!_.contains("apple"))
    12   c.foreach(println)
    13 
    14   /*ArrayBuffer是可变的序列,也就是说它的size是可改变的,所以可以直接删除它的元素,它提供了响应的方法.*/
    15   val b = ArrayBuffer('a','b','c','d','e','f','g','h','i','j','k','l')
    16   b -= 'a' //删除1个指定元素;
    17   b -= ('b','c')  //删除多个指定元素
    18   b --= Seq('d','e')  //通过1个集合来删除元素(可以用Array,Set)
    19   b.remove(0) //通过index来删除元素
    20   b.remove(1,2) //通过index来删除多个元素
    21   b.clear() //清除所有元素
    22   println(b)
    23 
    24 }

    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     }  

    看一个例子:

     1 import scala.collection.mutable.ArrayBuffer
     2 object test1 {
     3   def main(args: Array[String]) {
     4     //移除除第一个负数之外的所有负数  
     5     val a = Array(1, -2, 3, -5, 4, -5)
     6     var first = true
     7     //首先收集需要保留的数,返回的结果是一个vector集合  
     8     val indexs = for (i <- 0 until a.length if first || a(i) >= 0) yield {
     9       if (a(i) < 0) first = false; a(i)
    10     }
    11     print(indexs)  
    12   }
    13 
    14 }
  • 相关阅读:
    HTML5 文件上传
    Vue-Router模式、钩子
    网络基础协议随笔
    Vue-Router基础使用
    vue中mixin的一点理解
    纯css3跑马灯demo
    Charles使用笔记
    提个醒。。。
    本机未装Oracle数据库时Navicat for Oracle 报错:Cannot create oci environment 原因分析及解决方案
    easyUI datagrid 清空
  • 原文地址:https://www.cnblogs.com/LazyJoJo/p/6411659.html
Copyright © 2011-2022 走看看