Scala 基础集合计算函数代码示例
 
详细总结查看本文
 
package collectionsdemo
import scala.collection.mutable
import scala.collection.mutable.{ArrayBuffer, ListBuffer}
object NormalCollectionFunctionDemo {
  def main(args: Array[String]): Unit = {
    
    
    val arr = new Array[Int](5)
    val arr1: Array[Int] = Array(1,3,5,7,9)
    val arr2: Array[Int] = Array(1,3,5,7,9)
    val arrBuf1 = ArrayBuffer(11,33,55,77,99)
    val arrBuf2 = ArrayBuffer(22,44,66,88,1010)
    
    val list1 = List(1,3,5,7,9)
    val list2 = List(2,4,6,8,10)
    val listBuf1 = ListBuffer(11,33,55,77,99)
    val listBuf2 = ListBuffer(22,44,66,88,1010)
    
    val set1 = Set(1,3,5,7,9)
    val set2 = Set(2,4,6,8,10)
    val mutableSet1: mutable.Set[Int] = mutable.Set(11, 33, 55, 77, 99)
    val mutableSet2: mutable.Set[Int] = mutable.Set(22,44,66,88,1010)
    
    val map1: Map[String, Int] = Map(("abc", 1), ("def", 3), ("ghi", 5), "jkl" -> 7, "mno" -> 9)
    val map2: Map[String, Int] = Map(("pqr", 2), ("stu", 4), ("vwx", 6), "z" -> 8, "bc" -> 10)
    val mutableMap1: mutable.Map[String, Int] = mutable.Map("xiaowang" -> 11, "xiaowu" -> 33, "xiaogou" -> 55,
                "xiaozhou" -> 77, ("xiaochen", 99))
    val mutableMap2: mutable.Map[String, Int] = mutable.Map("wang" -> 22, "wu" -> 44, "gou" -> 66,
      "zhou" -> 88, ("chen", 1010))
    
    
    
    println(arr1.length + list1.length + set1.size + map1.size)
    println(arrBuf1.length + listBuf1.length + mutableSet1.size + mutableMap1.size)
    
    arr1.foreach(println)
    list1.foreach(println)
    set1.foreach(println)
    map1.foreach(println)
    arrBuf1.foreach(println)
    listBuf1.foreach(println)
    mutableSet1.foreach(println) 
    mutableMap1.foreach(println) 
    
    arr1.iterator
    list1.iterator
    set1.iterator
    val it =  map1.iterator
    while(it.hasNext){
      println(it.next() + "aaaa")
    }
    
    println( map1.mkString("; "))
    
    println(arr1.contains(1) + " " + list1.contains(1) + " " + set1.contains(1) + " " + map1.contains("abc"))
    
    println(arr1.head + " " + list1.head + " " + set1.head + " " + map1.head)
    
    
    
    
    println(arr1.tail.mkString("Array(", ", ", ")") + " " + list1.tail + " " + set1.tail + " " + map1.tail)
    
    println(arr1.last + " " + list1.last + " " + set1.last + " " + map1.last)
    
    println(arr1.reverse.mkString("Array(", ", ", ")") + " " + list1.reverse + " ")
    
    println(arr1.take(2).mkString("Array(", ", ", ")") + " " + list1.take(2) + " " + set1.take(2) + " " + map1.take(2))
    println(arr1.takeRight(2).mkString("Array(", ", ", ")") + " " + list1.takeRight(2) + " " + set1.takeRight(2) + " " + map1.takeRight(2))
    
    val ints: Array[Int] = arr1.drop(2)
    println(ints.mkString("Array(", ", ", ")") + " " + list1.drop(2) + " " + set1.drop(2) + " " + map1.drop(2))
    
    println(" 并集" + arr1.union(arr2).mkString("Array(",",",")") + " " + list1.union(list2) + " " + set1.union(set2) + " " + map1. ++(map2))
    println(mutableMap1 ++ mutableMap2)
    
    println(arr1.diff(arr2).mkString("Array(",",",")")+ " " + list1.diff(list2) + " " + set1.diff(set2) + " ")
    
    println(arr1.zip(arrBuf1).mkString("Array(",",",")"))
    println(list1.zip(listBuf1))
    println(set1.zip(mutableSet1))
    println(map1.zip(mutableMap1))
    
    
    
    println( "滑动窗口" + map1.sliding(3))
    
    map1.foreach(print)
    println
    for (elem <- map1.sliding(3,3)) {
      println(elem)
    }
    
    
    
    println(arr1.sum)
    println(list1.sum)
    println(set1.sum)
   
    
    
    println(arr1.min + " ;" + arr1.max)
    println(list1.min+ " ;" + list1.max)
    println(set1.min+ " ;" + set1.max)
    
    
    val list: List[(String, Int, Double)]= List(("小狗", 18, 172.5), ("小周", 13, 168.2), ("小陈", 23, 188), ("王二", 48, 156))
    println(list.minBy(tuple => tuple._2)) 
    println(list.maxBy(tuple => tuple._3)) 
    println(list.minBy(_._3)) 
    println("map 比较" + map1.minBy((tuple:(String, Int)) => tuple._2))
    
    println("sorted 自然排序: " + list1.sorted)
    
    println("sorted+ 隐式参数, 自然排序: " + list1.sorted(Ordering[Int].reverse))
    
    println(list.sortBy((tuple: (String, Int, Double)) => tuple._2)) 
    println(list.sortBy(tuple => tuple._2)) 
    println(list.sortBy(_._2)) 
    
    
    println(list.sortBy(_._2)(Ordering[Int].reverse))
    
    println("自定义排序" + list.sortWith((tuple1, tuple2) => tuple1._2 > tuple2._2))
    println("自定义排序: " + list.sortWith(_._2 > _._2)) 
    println(map1)
  }
}