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("^^^") // 指定分隔符返回