【scala】scala 數組 (三)

基礎內容html

1. 數組定義數組

   定長、可變數組的定義;元素添加,刪除,排序,求和等經常使用運算app

 

 

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

更多資料參考:

htm

scala 數組blog

 

scala 隱式轉換排序

相關文章
相關標籤/搜索