object ListDmeo {
def main(args: Array[String]): Unit = {
val arr = Array(1,5,8,7,3,4,2,9,10)
val max = arr.max
val min = arr.min
val sum = arr.sum
val avg = sum.toDouble / arr.length
// println(avg)
//从数组左边累加
/**
* 1+5 =6
* 6+8=14
*/
val i = arr.reduce((x, y) => x + y)
val i2 = arr.reduceLeft(_ + _)
val i3 = arr.reduceRight(_+_)
/**
* fold方法 ()里面的是初始值
* 在累加之前加上初始值
* 100+1 = 101
* 101+5 =106
* .....
*/
val f1 = arr.fold(100)(_ + _)
val f2 = arr.foldLeft(100)(_ + _)
val f3 = arr.foldRight(100)(_ + _)
//将数组中的每个元素都乘以10后生成一个新的集合
val map: Array[Int] = arr.map(x => x * 10)
// 过滤 将数组中的偶数拿出来 生成一个新的数组
val filt: Array[Int] = arr.filter(_ % 2 == 0)
//将集合排序后生成一个新的数组
/**
* 只能升序
* ArrayBuffer(1, 2, 3, 4, 5, 7, 8, 9, 10)
*/
val sorted: Array[Int] = arr.sorted
/**
* 使用sortBy的时候升序不可以用 _
* (1, 2, 3, 4, 5, 7, 8, 9, 10)
*/
val s2: Array[Int] = arr.sortBy(x => x)
//降序的时候可以使用 _
//(10, 9, 8, 7, 5, 4, 3, 2, 1)
val s3 = arr.sortBy(-_)
/**
* 将数组中的元素转换成String类型进行排序 返回的仍是Int类型 排序以字典顺序排序
* ArrayBuffer(1, 10, 2, 3, 4, 5, 7, 8, 9)
*/
val s4: Array[Int] = arr.sortBy(x => x.toString)
/**
* 按照降序的形式排序
* ArrayBuffer(10, 9, 8, 7, 5, 4, 3, 2, 1)
*/
val s5: Array[Int] = arr.sortWith((x, y) => x > y)
/**
* 按照升序的形式排序
* ArrayBuffer(1, 2, 3, 4, 5, 7, 8, 9, 10)
*/
val s6: Array[Int] = arr.sortWith((x, y) => x < y)
//将数组中的元素反转
//ArrayBuffer(10, 9, 2, 4, 3, 7, 8, 5, 1)
val re = arr.reverse
/**
* 将数组的元素3个为一组 返回类型是 Iterator[Array[Int]] 是一个迭代器
*/
val iterator: Iterator[Array[Int]] = arr.grouped(3)
/**
* 将迭代器 转换成List集合
* ArrayBuffer(1, 5, 8)
* ArrayBuffer(7, 3, 4)
* ArrayBuffer(2, 9, 10)
*/
val ls: List[Array[Int]] = iterator.toList
// for (i <- ls) println(i.toBuffer)
/**
* 将多个数组 压扁 成一个数组
* List(1, 5, 8, 7, 3, 4, 2, 9, 10)
*/
val flatten: List[Int] = ls.flatten
val arr2 = Array("a b c","d e f","g h")
//切割数组 ArrayBuffer(a, b, c, d, e, f, g, h)
val fm: Array[String] = arr2.flatMap(_.split(" "))
val lst1 = List(List(1,2,3),List(3,4,5),List(2),List(0))
/**
* 聚合
* ()里面的是初始值 _+_.sum 累加每个几个的和
* _+_ 以后为了多线程执行任务
* 20
*/
val result: Int = lst1.aggregate(0)(_ + _.sum, _ + _)
val l2 = List(5,6,7,4)
val l3 = List(1,2,3,4)
/**
* 求并集
* val un2: List[Any] = ls union l3
* List(5, 6, 7, 4, 1, 2, 3, 4)
*/
val un: List[Int] = l2.union(l3)
/**
* 求交集
* val ints2 = l2 intersect l3
* List(4)
*/
val ints: List[Int] = l2.intersect(l3)
/**
* 求差值
* val diff2: List[Int] = l2diff l3
* List(5, 6, 7)
*/
val diff1: List[Int] = l2.diff(l3)
}
}