• 【scala】scala 数组 (三)


    基础内容

    1. 数组定义

       定长、可变数组的定义;元素添加,删除,排序,求和等常用运算

    import scala.collection.mutable.ArrayBuffer
    import scala.math.BigDecimal.RoundingMode
    
    /**
      * @author xwolf
      * @date 2017-04-09 18:23
      * @since 1.8
      */
    object Collection {
    
      def main(arg:Array[String]): Unit ={
    
        multipleArray()
      }
    
      /**
        * 数组创建
        */
      private def create() :Unit={
        val a = new Array[String](1)
        a(0)="Hello"
    
        println(a.toBuffer)
        val ab =ArrayBuffer(3)
        ab+=1
        //append 可接受多个参数,在数组末尾追加元素
        ab.append(12,3,3)
        ab ++=Array(5,12)
        println("insert after 1: "+ ab)
        ab += (3,5)
        println("insert after 2: "+ ab)
        // 在指定索引 添加元素
        ab.insert(2,123,32)
        println("remove before:"+ab)
        //移除当前索引的元素
        ab.remove(1)
        println("remove after 1:"+ ab)
        //移除当前索引开始的元素的个数,超出会抛出下标越界异常
        ab.remove(4,3)
        println(ab)
        val ary = ab.toArray
        val arrayB = ary.toBuffer
        println(arrayB)
    
      }
    
      /**
        * 排序
        */
      def sort(){
        val ary =ArrayBuffer[Int]()
        ary ++=Array(1,123,3,123,4,12,10)
        println(ary)
    
        val a = ary.sortBy(x=>x)
        println(a)
        //自定义排序
        val c= ary.sortWith((a,b)=>a.compareTo(b)<0)
        println(c)
        val d= ary.sortWith((a,b)=>a.compareTo(b)>0)
    
        val f = ary.sorted
        println(f)
        println(d)
        //去重  过滤 map
        val e = d.distinct.filter(_.%(2)!=0).map(_.+(2))
        println(e)
      }
    
      /**
        * 常用运算
        */
      def calculator():Unit={
        val ary =Array(12,2,12,33,2,123,1)
        println(ary.max)//最大
        println(ary.min)//最小值
        println(ary.sum)//求和
        println(average(ary))//求平均值
      }
    
      /**
        * 求数组的平均值 四舍五入保留两位小数
        * @param ary
        * @return
        */
      private def average(ary:Array[Int]):BigDecimal={
        val len = ary.length
        val sum = ary.sum
        (BigDecimal.valueOf(sum)./(BigDecimal.valueOf(len))).setScale(2,RoundingMode.UP)
      }
    
      /**
        * 多维数组
        */
      def multipleArray(): Unit ={
        //多维数组定义
        val mary = new Array[Array[Int]](2)
        mary(0)=Array(1,2,3,1,4)
        mary(1)=Array(2,1,4)
        for(ary<-mary){
           println(ary.toBuffer)
        }
    
        //定义 2行 3列 数组
        val nary =Array.ofDim[Int](2,3)
        nary(0)(0)=12
        nary(0)(1)=13
        nary(0)(2)=14
    
        nary(1)(0)=22
        nary(1)(1)=23
        nary(1)(2)=24
    
        println(nary.toBuffer)
    
        for(i<-0 until nary.length){
          println(nary(i).toBuffer)
        }
    
    
      }
    }
    

      

    scala 数组操作中使用了隐式转化.

    更多资料参考:

    scala 数组

    scala 隐式转换

  • 相关阅读:
    自写简单弹出框
    eclipse中debug模式不能启动运行,run运行模式却能启动运行!
    事务特性简单理解
    Java虚拟机4:内存溢出
    Java虚拟机3:常用JVM命令参数
    Java虚拟机2:Java内存区域及对象
    Eclipse技巧
    js常用的原生方法
    JavaScript调试小技巧
    html 锚点的使用
  • 原文地址:https://www.cnblogs.com/lonelywolfmoutain/p/6698213.html
Copyright © 2020-2023  润新知