首页 > 其他分享 >Scala列表数组学习

Scala列表数组学习

时间:2022-11-27 22:23:26浏览次数:43  
标签:val Scala Int List 列表 var 数组 println list12

数组

 

不可变数组——定义、查询、增加、循环

//定义数据
    var arr: Array[Int] = new Array[Int](5)
    
    var arr2 = Array(2, 3, 42, 21, 3)
    //循环以及查询数据
    for (i <- 0 until arr2.length) {
      println(arr2(i))
    }
    for (i <- arr2.indices) {
      println(arr2(i))
    }
    for (elem <- arr2) {
      println(elem)
    }
    var iter = arr2.iterator
    while (iter.hasNext)
      println(iter.next())
    arr2.foreach(println)
  
    //增加数据
    var newArr = arr2.:+(73)
    println(newArr)

 

可变数组——定义,增加(循环与查询与不可变的一样)

    //可变数组
    var arr3: ArrayBuffer[Int] = new ArrayBuffer[Int]()
    var arr4 = ArrayBuffer(23, 21, 32)

    arr3.append(32)
    arr3.insert(0, 4)
    arr4.append(5)
    println(arr3) // (4, 32)
    println(arr4) // (23, 21, 32, 5)

 

列表操作

    // 创建不可变列表
    var list1 = List(1, 2, 3)
    list1.foreach(println)
    var list5 = 32 :: 14 :: Nil
    var list6 = 21 :: 1 :: Nil
    var list7 = list5 ::: list6
    println(list7)

    // 创建可变列表
    val list8 : ListBuffer[Int] = new ListBuffer[Int]()
    list8.append(15, 23)
    val list9 = ListBuffer(12, 52, 21)
    var list3 = list8 ++ list9

 

Set操作

    // 不可变set
    val set1 = Set(3, 21, 4)
    println(set1)

    val set2 = set1 + 20
    val set3 = set1 ++ set2
    println(set3)

    // 可变set
    val set4: mutable.Set[Int] = mutable.Set(12, 32, 33, 23, 43)
    set4.add(4)
    set4.remove(12)
    println(set4)

 

Map操作

    // 可变map
    val map2 : mutable.Map[String, Int] = mutable.Map("a"-> 13, "b" -> 32)
    map2.put("c", 23)
    map2.remove("a")
    map2.update("b", 2)
    for (key <- map2.keys) {
      println(s"${key} --->${map1.get(key)}" )
    }
    // 如果没有对应键
    println(map2.getOrElse("c", 0))

 

集合并集、交集、差集

    val list10 = List(1, 2, 3, 5, 8)
    val list11 = List(2, 3, 9, 10, 22)

    // 并集, 如果基础集合为Set,会自动去重
    val union = list10.union(list11)
    println(union)

    // 交集
    val intersection = list10.intersect(list11)
    println(intersection)

    // 差集
    val diff1 = list10.diff(list11)
    val diff2 = list11.diff(list10)

    println(diff1, diff2)

 

集合计算(求和、求乘积、最大值、最小值、排序)

    val list12 = List(2, 3, 9, 10, 22)

    // 求和
    println(list12.sum)

    // 求乘积
    println(list12.product)

    // 最大值、最小值
    println(list12.max)
    println(list12.min)

    // 排序
    var sortedList = list12.sorted
    // 正序
    println(sortedList)
    // 倒序
    println(sortedList.reverse)

    // 从小到大排序,以下等同
    println(list12.sortWith((a: Int, b: Int) => {a < b}))
    println(list12.sortWith(_ < _))

 

集合扁平化、分组计算、聚合、fold、merge合并、wordCount计算

    var list15 = List(1, 2, 3, 4, 5, 6, 7, 8, 9)

    // 把集合中每个数乘2
    println(list15.map(_ * 2))

    // 扁平化
    val nestedList: List[List[Int]] = List(List(1, 2, 3), List(4, 5), List(6,7,8,9))
    val flatList = nestedList.flatten
    println(flatList)

    // 分组
    val groupMap : Map[Int, List[Int]] = list15.groupBy(_ % 2)
    println(groupMap)

    // 聚合
    val reduceList = list15.reduce(_ - _) // 1-2-3-4-5-6-7-8-9
    println(reduceList)

    // fold
    println(list15.fold(20)(_ + _)) // 20 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9

    // merge合并
    val map3 = Map("a" -> 1, "b" -> 3, "c" -> 5)
    val map4 = mutable.Map("a" -> 2, "b" -> 2, "c" -> 4)

    val map5 = map3.foldLeft(map4)(
      (mergedMap, kv) => {
        val key = kv._1
        val value = kv._2
        mergedMap(key) = mergedMap.getOrElse(key, 0) + value
        mergedMap
      }
    )
    println(map5)

    val StringList : List[String] = List(
      "hello",
      "hello spark ",
      "hello world",
      "hello scala",
      "hello spark from",
      "hello scala hehe"
    )

    val wordList = StringList.flatMap(_.split(" "))
    println(wordList)

    val groupMap1: Map[String, List[String]] = wordList.groupBy(word => word)

    val stringToInt: Map[String, Int] = groupMap1.map(kv => (kv._1, kv._2.length))

    val sortList2: List[(String, Int)] = stringToInt.toList.sortWith(_._2 > _._2)
    println(sortList2)

 

标签:val,Scala,Int,List,列表,var,数组,println,list12
From: https://www.cnblogs.com/tianshu/p/16883443.html

相关文章

  • Scala学习(除列表集合等)
    Idea配置安装 进入idea后,选取file中的setting选项,在plugins中安装scala,之后重启idea。 右键点击项目,选取AddFrameworkSupport,并选取对应的scala版本  新建......
  • 数组
    数据中的元素可以是任意类型数组越界:Index10outofbounds数组是相同类型数据的有序集合,每一个数据成为数组的一个元素,我们可以通过数组的下标(从0开始)来访问它们。定......
  • 1752. 检查数组是否经排序和轮转得到
    1752.检查数组是否经排序和轮转得到classSolution{publicbooleancheck(int[]nums){intn=nums.length;intx=0;for(inti=......
  • VS, VSCode写C/C++代码时, 如何查看二维动态数组的值
    VS(VisualStudio):例:查看第1行的头2列数据,如下图所示 VSCode(VisualStudio):例:查看第1行的头5列数据,第2行的头5列数据,如下图所示......
  • python 列表排序方法
    常见的列表排序方法参考:https://blog.csdn.net/m0_69265664/article/details/125703164iterable.sort()参考:https://blog.csdn.net/rhx_qiuzhi/article/details/1193025......
  • 力扣 leetcode 1752. 检查数组是否经排序和轮转得到
    问题描述给你一个数组nums。nums的源数组中,所有元素与nums相同,但按非递减顺序排列。如果nums能够由源数组轮转若干位置(包括0个位置)得到,则返回true;否则,返回fa......
  • 1752. 检查数组是否经排序和轮转得到 ----- 数组环
    给你一个数组nums。nums的源数组中,所有元素与nums相同,但按非递减顺序排列。如果 nums能够由源数组轮转若干位置(包括0个位置)得到,则返回true;否则,返回false。......
  • ClickHouse 截取数组的部分元素,得到一个新的子数组: arraySlice (array, offset[, leng
    截取数组的部分元素,得到一个新的子数组arraySlice(array,offset[,length])参数解释:array:数组,offset–数组的偏移。正值表示左侧的偏移量,负值表示右侧的缩进值。数组下......
  • 运用StringBuilder类中的reverse来反转数组
      /*其实不转换为String也行,运用StringBuilder输出即可比自己定义的String来反转更加简单方便也可以一次性输出定义出来这个反转方法通过匿......
  • 数据结构与算法-稀疏数组
    稀疏数组当一个数组中大部分元素为0,或者为同一个数值时,可以使用稀疏数组来保存该数组稀疏数组的处理方法是:​ 1.记录数组一共有几行几列,有多少不同的值​ 2.把具有......