Scala随笔

2022-10-27 16:40:19 浏览数 (1)

Scala混入特质

代码语言:javascript复制
package com.jmy
import java.util

import scala.io.StdIn
object ObjectDemo01 {

  def main(args: Array[String]): Unit = {
    // 单例模式懒汉式
    var demo: ScalaDemo = ScalaDemo.getIntance()
    var demo1: ScalaDemo = ScalaDemo.getIntance()
    println(demo)
    println(demo1)

    // 构造函数
    println(new A())
    println(new A("jjj"))
    println(new A())
    println(new A("jjj", ))
    // 混入特质
    var dog= new Dog
    dog.eat
    dog.sleep
    dog.say

    /*
             不可变          可变
    数组     Array          ArrayBuffer
    列表     List           ListBuffer
    散列    immutable.Set   mutable.Set
    元组    Tuple
    */
    var arr:Array[Int] = new Array[Int]()
    arr() = 
    arr() = 
    arr() = 
    arr() = 
    println(util.Arrays.toString(arr :  ))
    println(util.Arrays.toString(arr))

    // 四则运算
    var i = StdIn.readDouble()
    var j = StdIn.readDouble()
    var k = StdIn.readChar()

    var result = k match {
      case ' ' => i   j
      case '-' => i - j
      case '*' => i * j
      case '/' => i / j
      case _ => "你瞎呀"
    }
    println(result)

    // 元组 Tuple
    var t3 = Tuple3("jjj",,"aomen")
  }

}

class ScalaDemo private() {}

object ScalaDemo {
  final val scala: ScalaDemo = new ScalaDemo()

  def getIntance() = scala
}

class A() { // 主构造器
  private var name: String = _
  private var age: Int = _

  def this(name: String) = {
    this
    this.name = name
  } // 辅助构造器

  def this(age: Int) = {
    this
    this.age = age
  }

  def this(name: String, age: Int) {
    this
    this.name = name
    this.age = age
  }

  override def toString = s"A($name, $age)"
}

// 特质
trait Pet {
  def eat

  def sleep
}

class Animal {
  def say = println("我是动物")
}

class Dog extends Animal with Pet {
  override def eat: Unit = println("吃吃吃")

  override def sleep: Unit = println("睡睡睡")
}

Scala集合常用API

代码语言:javascript复制
/*
            不可变          可变
   数组     Array          ArrayBuffer
   列表     List           ListBuffer
   散列    immutable.Set   mutable.Set
   元组    Tuple

 */

// 声明定长数组 并赋初值
val a1 = Array(,,,,)
// 声明定长数组,并指定长度
val a2 = Array[Int]()
// 声明变长数组
val a3 = scala.collection.mutable.ArrayBuffer(,,)

// 下标操作
a1.apply() // 等价于 a1(0)
a1() = 
a1

a3.append()
a3

// 数组常用方法
val arr = Array(,,,,)
arr.take() // 取出前n个元素并返回到新的集合中
arr.takeRight() // 取出后n个元素并返回到新的集合中
arr.drop() // 删除前n个元素,并返回剩余元素到新的集合
arr.dropRight() // 删除后n个元素,并返回剩余元素到新的集合

arr.head // 取出集合头元素有别take(1)
arr.last // 取出集合尾元素有别takeRight(1)

val arr1 = Array(,,,,,)

val r1 = arr1.max // 取出最大值
val r2 = arr1.min
val r3 = arr1.sum
val r4 = r3/arr1.length // 求均值
// 遍历集合 匿名函数指定操作
arr1.foreach(x=>println(x))

val a6 = Array(,,)
val a7 = Array(,,)
//求交集返回到新的集合
val r12 = a6.intersect(a7)
// 并集
val r13 = a6.union(a7)
// 去重
val r14 = r13.distinct
// 取差集
val r15 = a6.diff(a7)

val a8 = Array(,,,,,)
// 过滤大于3的元素并返回到新集合中
val r17 = a8.filter(x => x>)

// 操作a8过滤偶数元素并大于4
a8.filter(x =>{x% ==  && x > })
val a9 = Array("tom M 23","rose F 17","jim M 35")
// 操作a9过滤出男性数据
a9.filter(str => str.split(" ")().equals("M"))

// 操作a9 过滤出成年人数据
a9.filter(str => Integer.parseInt(str.split(" ")()) > )

val a10 = Array(,,,)

// 将集合中每一个元素映射到另一个形式
val r25 = a10.map(num => num*)
val r26 = a10.map(num => num.toString)

// 练习操作a9 用map做映射,返回只有姓名
a9.map(str => str.split(" ")())
// 练习 操作a9求出男性年龄之后
a9.filter(str => str.split(" ")().equals("M")).map(str => str.split(" ")().toInt).sum

val a11 = Array(,,,)

//reduce方法归约方法,底层多次迭代
val r30 = a11.reduce((a,b) => a b)
// 操作a11 求阶乘结果
val r31 = a11.reduce((a,b) => a*b)

val a12 = Array(,,,,)

// 使用reduce返回a12的最大值
val r32 = a11.reduce((a,b) => if (a>b) a else b)

// 排序
val r33 = a12.sortBy(x => x) // 做升序排序
val r34 = a12.sortBy(x => x).reverse // 做降序排序
val r35 = a12.sortBy(x => -x) // 降序等价于reverse
// 练习:caozuoa13 按姓名做升序排序
val a13 = Array("tom 23","rose 18","jim 40","jary 35")
val r36 = a13.sortBy(str => str.split(" ")())
val r37 = a13.sortBy(str => str.split(" ")()).reverse

// 求出a13中年龄中最小的前三个人的年龄均值
(a13.sortBy(str => str.split(" ")()).take()).map(str => str.split(" ")().toInt)
.sum/

val a14 = Array(,,,)
// 将集合中所有元素返回为一个字符串
val r40 = a14.mkString
val r41 = a14.mkString("^^^") // 指定分隔符返回

0 人点赞