• Scala---字符串、集合


    一、字符串

    1. String
    2. StringBuilder 可变
    3. string操作方法举例
    • 比较:equals
    • 比较忽略大小写:equalsIgnoreCase
    • indexOf:如果字符串中有传入的assci码对应的值,返回下标
    1. 1./**
    2. 2.* String && StringBuilder
    3. 3.*/
    4. 4.val str = "abcd"
    5. 5.val str1 = "ABCD"
    6. 6.
    7. 7.println(str.indexOf(97))
    8. 8.println(str.indexOf("b"))
    9. 9.
    10. 10.println(str==str1)
    11. 11./**
    12. 12.* compareToIgnoreCase
    13. 13.*
    14. 14.* 如果参数字符串等于此字符串,则返回值 0
    15. 15.* 如果此字符串小于字符串参数,则返回一个小于 0 的值;
    16. 16.* 如果此字符串大于字符串参数,则返回一个大于 0 的值。
    17. 17.*
    18. 18.*/
    19. 19.println(str.compareToIgnoreCase(str1))
    20. 20.
    21. 21.val strBuilder = new StringBuilder
    22. 22.strBuilder.append("abc")
    23. 23.// strBuilder.+('d')
    24. 24.strBuilder+ 'd'
    25. 25.// strBuilder.++=("efg")
    26. 26.strBuilder++= "efg"
    27. 27.// strBuilder.+=('h')
    28. 28.strBuilder+= 'h'
    29. 29.strBuilder.append(1.0)
    30. 30.strBuilder.append(18f)
    31. 31.println(strBuilder)

    二、集合

    数组

    1、创建数组

    • new Array[Int](10)

    赋值:arr(0) = xxx

    • Array[String](“s1”,”s2”,”s3”)

    2、数组遍历

    • for
    • foreach

    3、创建一维数组和二维数组

    4、数组中方法举例

    • Array.concate:合并数组
    • Array.fill(5)(“zhangsan”):创建初始值的定长数组

    创建两种方式:

    1. 1./**
    2. 2.* 创建数组两种方式:
    3. 3.* 1.new Array[String](3)
    4. 4.* 2.直接Array
    5. 5.*/
    6. 6.
    7. 7.//创建类型为Int 长度为3的数组
    8. 8.val arr1 = new Array[Int](3)
    9. 9.//创建String 类型的数组,直接赋值
    10. 10.val arr2 = Array[String]("s100","s200","s300")
    11. 11.//赋值
    12. 12.arr1(0) = 100
    13. 13.arr1(1) = 200
    14. 14.arr1(2) = 300

    遍历两种方式:

    1. 1./**
    2. 2.* 遍历两种方式
    3. 3.*/
    4. 4.for(i <- arr1){
    5. 5. println(i)
    6. 6.}
    7. 7.arr1.foreach(i => {
    8. 8. println(i)
    9. 9.})
    10. 10.
    11. 11.for(s <- arr2){
    12. 12. println(s)
    13. 13.}
    14. 14.arr2.foreach {
    15. 15. x => println(x)
    16. 16.}

    创建二维数组:

    1. 1./**
    2. 2.* 创建二维数组和遍历
    3. 3.*/
    4. 4.val arr3 = new Array[Array[String]](3)
    5. 5.arr3(0)=Array("1","2","3")
    6. 6.arr3(1)=Array("4","5","6")
    7. 7.arr3(2)=Array("7","8","9")
    8. 8.for(i <- 0 until arr3.length){
    9. 9. for(j <- 0 until arr3(i).length){
    10. 10. print(arr3(i)(j)+" ")
    11. 11. }
    12. 12. println()
    13. 13.}
    14. 14.
    15. 15.var count = 0
    16. 16.for(arr <- arr3 ;i <- arr){
    17. 17. if(count%3 == 0){
    18. 18. println()
    19. 19. }
    20. 20. print(i+" ")
    21. 21. count +=1
    22. 22.}
    23. 23.
    24. 24.arr3.foreach { arr => {
    25. 25. arr.foreach { println }
    26. 26.}}
    27. 27.
    28. 28.
    29. 29.val arr4 = Array[Array[Int]](Array(1,2,3),Array(4,5,6))
    30. 30.arr4.foreach { arr => {
    31. 31. arr.foreach(i => {
    32. 32. println(i)
    33. 33. })
    34. 34.}}
    35. 35.println("-------")
    36. 36.for(arr <- arr4;i <- arr){
    37. 37. println(i)
    38. 38.}

    5、可变长数组

    1. /**
    2. * 可变长度数组的定义
    3. */
    4. val arr = ArrayBuffer[String]('a','b','c')
    5. arr.append("hello","scala")//添加多个元素
    6. arr.+=("end")//在最后追加元素
    7. arr.+=:("start")//在开头添加元素
    8. arr.foreach(println)

    list

    1、创建list

    val list = List(1,2,3,4)

    • Nil长度为0的list

    2、list遍历

    foreach ,for

    3、list方法举例

    • filter:过滤元素
    • count:计算符合条件的元素个数
    • map:对元素操作
    • flatmap :压扁扁平,先map再flat
    1. 1.//创建
    2. 2.val list = List(1,2,3,4,5)
    3. 3.
    4. 4.//遍历
    5. 5.list.foreach { x => println(x)}
    6. 6.// list.foreach { println}
    7. 7.//filter
    8. 8.val list1 = list.filter { x => x>3 }
    9. 9.list1.foreach { println}
    10. 10.
    11. 11.//count
    12. 12.val value = list1.count { x => x>3 }
    13. 13.println(value)
    14. 14.
    15. 15.//map
    16. 16.val nameList = List(
    17. 17. "hello zhangsan",
    18. 18. "hello xasxt",
    19. 19. "hello shsxt"
    20. 20.)
    21. 21.val mapResult:List[Array[String]] = nameList.map{ x => x.split(" ") }
    22. 22.mapResult.foreach{println}
    23. 23.
    24. 24.//flatmap
    25. 25.val flatMapResult : List[String] = nameList.flatMap{ x => x.split(" ") }
    26. 26.flatMapResult.foreach { println }

     

    4、可变长List

    1. 1./**
    2. 2.* 可变长list
    3. 3.*/
    4. 4.val listBuffer: ListBuffer[Int] = ListBuffer[Int](1,2,3,4,5)
    5. 5.listBuffer.append(6,7,8,9)//追加元素
    6. 6.listBuffer.+=(10)//在后面追加元素
    7. 7.listBuffer.+=:(100)//在开头加入元素
    8. 8.listBuffer.foreach(println)

    set

    1、创建set

    注意:set集合会自动去重

    2、set遍历

    foreach,for

    3、set方法举例

    • 交集:intersect ,&
    • 差集: diff ,&~
    • 子集:subsetOf
    • 最大:max
    • 最小:min
    • 转成数组,toList
    • 转成字符串:mkString(“~”)

    4、set方法总结

    1. 1.//创建
    2. 2.val set1 = Set(1,2,3,4,4)
    3. 3.val set2 = Set(1,2,5)
    4. 4.//遍历
    5. 5.//注意:set会自动去重
    6. 6.set1.foreach { println}
    7. 7.for(s <- set1){
    8. 8. println(s)
    9. 9.}
    10. 10.println("*******")
    11. 11./**
    12. 12.* 方法举例
    13. 13.*/
    14. 14.
    15. 15.//交集
    16. 16.val set3 = set1.intersect(set2)
    17. 17.set3.foreach{println}
    18. 18.val set4 = set1.&(set2)
    19. 19.set4.foreach{println}
    20. 20.println("*******")
    21. 21.//差集
    22. 22.set1.diff(set2).foreach { println }
    23. 23.set1.&~(set2).foreach { println }
    24. 24.//子集
    25. 25.set1.subsetOf(set2)
    26. 26.
    27. 27.//最大值
    28. 28.println(set1.max)
    29. 29.//最小值
    30. 30.println(set1.min)
    31. 31.println("****")
    32. 32.
    33. 33.//转成数组,list
    34. 34.set1.toArray.foreach{println}
    35. 35.println("****")
    36. 36.set1.toList.foreach{println}
    37. 37.
    38. 38.//mkString
    39. 39.println(set1.mkString)
    40. 40.println(set1.mkString("\t"))

    5、可变长set

    1. 1./**
    2. 2.* 可变长Set
    3. 3.*/
    4. 4.import scala.collection.mutable.Set
    5. 5.val set = Set[Int](1,2,3,4,5)
    6. 6.set.add(100)
    7. 7.set.+=(200)
    8. 8.set.+=(1,210,300)
    9. 9.set.foreach(println)

    map

    1、map创建

    • Map(1 –>”zhangsan’)
    • Map((1,”zhangsan”))

    注意:创建map时,相同的key被后面的相同的key顶替掉,只保留一个。

    2、获取map的值

    • map.get(“1”).get
    • map.get(100).getOrElse(“no value”):如果map中没有对应项,赋值为getOrElse传的值。
    1. 1.//获取值
    2. 2.println(map.get("1").get)
    3. 3.val result = map.get(8).getOrElse("no value")
    4. 4.println(result)

    3、遍历map

    • for,foreach
    1. 1.//map遍历
    2. 2.for(x <- map){
    3. 3. println("====key:"+x._1+",value:"+x._2)
    4. 4.}
    5. 5.map.foreach(f => {
    6. 6. println("key:"+ f._1+" ,value:"+f._2)
    7. 7.})

    4、遍历key

    • map.keys
    1. 1.//遍历key
    2. 2.val keyIterable = map.keys
    3. 3.keyIterable.foreach { key => {
    4. 4.println("key:"+key+", value:"+map.get(key).get)
    5. 5.} }
    6. 6.println("---------")

    5、遍历value

    • map.values
    1. 1.//遍历value
    2. 2.val valueIterable = map.values
    3. 3.valueIterable.foreach { value => {
    4. 4. println("value: "+ value)
    5. 5.} }

    6、合并map

    • ++  例:map1.++(map2)  --map1中加入map2
    • ++:  例:map1.++:(map2) –map2中加入map1

    注意:合并map会将map中的相同key的value替换

    1. 1.//合并map
    2. 2.val map1 = Map(
    3. 3.(1,"a"),
    4. 4.(2,"b"),
    5. 5.(3,"c")
    6. 6.)
    7. 7.val map2 = Map(
    8. 8.(1,"aa"),
    9. 9.(2,"bb"),
    10. 10.(2,90),
    11. 11.(4,22),
    12. 12.(4,"dd")
    13. 13.)
    14. 14.map1.++:(map2).foreach(println)

    7、map中的方法举例

    • filter:过滤,留下符合条件的记录
    • count:统计符合条件的记录数
    • contains:map中是否包含某个key
    • exist:符合条件的记录存在不存在
    1. 1./**
    2. 2.* map方法
    3. 3.*/
    4. 4.//count
    5. 5.val countResult = map.count(p => {
    6. 6. p._2.equals("shsxt")
    7. 7.})
    8. 8.println(countResult)
    9. 9.
    10. 10.//filter
    11. 11.map.filter(_._2.equals("shsxt")).foreach(println)
    12. 12.
    13. 13.//contains
    14. 14.println(map.contains(2))
    15. 15.
    16. 16.//exist
    17. 17.println(map.exists(f =>{
    18. 18. f._2.equals("xasxt")
    19. 19.
    20. 20.}))

    8、可变长map

    1. **
    2. * 可变长Map
    3. */
    4. import scala.collection.mutable.Map
    5. val map = Map[String,Int]()
    6. map.put("hello",100)
    7. map.put("world",200)
    8. map.foreach(println)

  • 相关阅读:
    ChatGPT:让机器学习与深度学习变得轻松有趣
    成本高、落地难、见效慢,开源安全怎么办?
    【222】MyQSL技术内幕 InnoDB 存储引擎第二版 笔记
    Python 编程基础 | 第一章-预备知识 | 1.1、Python简介
    阿里云服务器镜像系统Anolis OS龙蜥详细介绍
    java毕业设计车辆监管系统mybatis+源码+调试部署+系统+数据库+lw
    LeetCode(23)找出字符串中第一个匹配项的下标【数组/字符串】【简单】
    如何调试JNI程序
    【LeetCode_数组_遍历】628. 三个数的最大乘积
    正版软件 | R-Drive Image:数据安全守护者,您的智能备份专家
  • 原文地址:https://blog.csdn.net/yaya_jn/article/details/134412291