《scala函数式编程》之List和Set

本文主要介绍了Scala编程中两种重要的数据结构——List和Set,包括它们的API详细内容,帮助读者深入理解其特性和使用方法。
摘要由CSDN通过智能技术生成
package com.lyzx.day20181005

/**
  * Scala 集合分为可变的和不可变的集合
  * 默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set包.
  * 默认引用 scala.collection.immutable._,不可变集合实例如下
  */
class DataStructure {
  /**
    * 列表的定义
    *   可以使用 item :: 列表即t2  Nil表示一个空列表即List() == Nil
    *    可以使用 列表 :+ item 在列表后面添加一个元素
    * 通过 indices 可以获取列表的下标Range 再通过for循环遍历数组
    */
  def list_f1(): Unit ={
    val t1:List[Int] = List(1,2,3)
//    val t2:List[String] = "C" :: ("A" :: ("B" :: Nil))
    val t2 = List("A","B","C") +: "D"

    for(item <- t2){
      print(item+" , ")
    }
    println()
    for(i <- t1.indices){
      println(i+"    "+t1(i))
    }

    /**
      * List.head  返回List的第一个元素
      * List.tail  返回除了第一个元素的List集合
      */
    println("t2.head="+t2.head)
    println("t2.tail="+t2.tail)
    println("t2.isEmpty="+t2.isEmpty)
  }

  /**
    * 列表的连接
    * 1、通过 :: 向List的头部添加一个元素
    * 2、
    *   2.1、通过 :::添加   t1 ::: t2                表示把t2的元素放在了t1的后面
    *   2.2、通过 .:::      t1.:::(t2)               表示把t2的元素放在了t1的前面
    *   2.3、List.concat()  List.concat(t1,t2)       表示把t2的元素放在了t1的后面
    */
  def list_f2(): Unit ={
    val t1 = "B" :: ("A" :: Nil)
    val t2 = List("C","D")

    val t2_1 = t1 ::: t2
    val t2_2 = t1.:::(t2)
    val t2_3 = List.concat(t1,t2)

    print(" ::: ")
    for(item <- t2_1){
      print(item+",")
    }
    println()

    print(" .:::() ")
    for(item <- t2_2){
      print(item+",")
    }
    println()

    print("List.concat() ")
    for(item <- t2_3){
      print(item+",")
    }
  }


  /**
    * fill函数 表示填充N次元素
    * List.fill(2)("A")  表示返回一个列表,其中有2个字符串元素 "A"
    */
  def list_f3(): Unit ={
    val t1 = List.fill(2)("A")
    for(item <- t1){
      print(item+"   ")
    }
    println()
    val t2 = (t1 ::: ("X" :: Nil)).reverse
    for(item <- t2){
      print(item+"   ")
    }
  }

  /**
    * set的基本操作
    */
  def set_f4(): Unit ={
    val set = Set(100,1,2,3,3,4)
    println("1:"+set.getClass.getName)
    println("2:"+set.exists( _ >= 4))
    println("3:"+set.drop(1))
    println("4:"+set.dropRight(1))
    println("5:"+set.dropWhile(_ > 3)) //???

    for(item <- set){
        print(item+"  ")
    }
    println()
    println("6:"+set.head)
    println("7:"+set.tail)
    println("8:"+set.isEmpty)
  }

  /**
    * set的连接
    */
  def set_f5(): Unit ={
    val s1 = Set(1,2,3,4)
    val s2 = Set(2,3,4,5)
    val 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值