scala 集合操作demo

时间:2021-04-18 19:53:01
package com.qiandw.kingdee

import com.qiandw.SpringTestSuite
import org.junit.Test
import org.springframework.beans.factory.annotation.Autowired

class Test01 extends SpringTestSuite {

  @Autowired
  var txDataSrv: TxDataSrv = _

  /**  * ++ 操作 在列表尾部添加另一个列表  */  @Test
  def test001(): Unit = {
    var data1 = List(("a", 1), ("b", 2), ("c", 3))
    var data2 = List(("d", 4), ("e", 5), ("f", 6))
    var connectList = data1 ++ (data2)
    println(connectList)
  }
    输出:List((a,1), (b,2), (c,3), (d,4), (e,5), (f,6))
  /**  * ++: 在列表头部添加另一个列表  */  @Test
  def test002(): Unit = {
    var data1 = List(("a", 1), ("b", 2), ("c", 3))
    var data2 = List(("d", 4), ("e", 5), ("f", 6))
    var connectList = data1.++:(data2)
    println(connectList)
  }
    输出:List((d,4), (e,5), (f,6), (a,1), (b,2), (c,3))
  /**  * +:(elem: A): List[A] 在列表的头部添加一个元素  */  @Test
  def test003(): Unit = {
    var data1 = List(("a", 1), ("b", 2), ("c", 3))
    var element = ("d", 4)
    var connectList = data1.+:(element)
    println(connectList)
  }
    输出:List((d,4), (a,1), (b,2), (c,3))
  /**  * :+(elem: A): List[A] 在列表的尾部添加一个元素  */  @Test
  def test004(): Unit = {
    var data1 = List(("a", 1), ("b", 2), ("c", 3))
    var element = ("d", 4)
    var connectList = data1.:+(element)
    println(connectList)
  }
    输出:List((a,1), (b,2), (c,3), (d,4))
  /**  * +:(elem: A): List[A] 在列表的头部部添加一个元素  */  @Test
  def test005(): Unit = {
    var data1 = List(("a", 1), ("b", 2), ("c", 3))
    var element = ("d", 4)
    var connectList = data1.+:(element)
    println(connectList)
  }
    輸出:List((d,4), (a,1), (b,2), (c,3))
  /**  * ::(elem: A): List[A] 在列表的头部部添加一个元素  */  @Test
  def test006(): Unit = {
    var data1 = List(("a", 1), ("b", 2), ("c", 3))
    var element = ("d", 4)
    var connectList = data1.::(element)
    println(connectList)
  }
    輸出:List((d,4), (a,1), (b,2), (c,3))
  /**  * flattten  */  @Test
  def test007(): Unit = {
    var data1 = List(List(("a", 1), ("b", 2), ("c", 3)), List(("d", 4), ("e", 5), ("f", 6)))
    var connectList = data1.flatten
    println(connectList)
  }
    輸出:List((a,1), (b,2), (c,3), (d,4), (e,5), (f,6))
  /**  * reduce  */  @Test
  def test008(): Unit = {
    var data1 = List(List(("a", 1), ("b", 2), ("c", 3)), List(("d", 4), ("e", 5), ("f", 6)))
    var connectList = data1.flatten
    var sum = connectList.reduce((a, b) => (a._1 + b._1, a._2 + b._2))
    println(sum)
  }
    輸出:(abcdef,21)
  /**  * reduceLeft  */  @Test
  def test009(): Unit = {
    var data1 = List(List(("a", 1), ("b", 2), ("c", 3)), List(("d", 4), ("e", 5), ("f", 6)))
    var connectList = data1.flatten
    var sum = connectList.reduceLeft((a, b) => (a._1 + b._1, a._2 + b._2))
    println(sum)
  }
    輸出:(abcdef,21)  //這裏説明一下爲什麽測試009和008結果是一樣的,009是雖然從右往左,但是連接符兩邊的順序任然是從左往右,即:e+f = ef ,然後d + ef =def ,依次往左
  /**  * reduceLeft  */  @Test
  def test010(): Unit = {
    var data = List("a", "c", "d")
    var processedList = data.reduceLeft(_ + _)
    println(processedList)
  }
    輸出:acd
  /**  * match Test  */  @Test
  def test011: Unit = {
    var a = "a1"  a match {
      case "c" =>
      case "a" => println("ok")
      case _ => println("null")  輸出:null
    }
  }