前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala随笔

Scala随笔

作者头像
姜同学
发布2022-10-27 16:40:19
2150
发布2022-10-27 16:40:19
举报
文章被收录于专栏:姜同学姜同学

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("^^^") // 指定分隔符返回
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-06T,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Scala混入特质
  • Scala集合常用API
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档