小小千想和您聊一聊

当前位置: 首页> 技术分享> Scala系列之List、set、元祖

Scala系列之List、set、元祖

  4.3. 元组(Tuple)

  映射是K/V对偶的集合,对偶是元组的最简单形式,元组可以装着多个不同类型的值,是不同类型的值的聚集。

  4.3.1. 创建访问元组

  创建元组:使用小括号将多个元素括起来,元素之间用逗号分隔,元素的类型和个数任意,

  访问组元:使用_1, _2, _3等访问组元。

  第二种方式定义的元组也可以通过a,b,c去访问组元。

  另一种定义方式:

  val t = new Tuple3(1, 3.14, "Fred")

  元组的实际类型取决于它的元素的类型,比如 (99, "runoob") 是 Tuple2[Int, String]。 ('u', 'r', "the", 1, 4, "me") 为 Tuple6[Char, Char, String, Int, Int, String]。

  目前 Scala 支持的元组最大长度为 22。对于更大长度你可以使用集合,或者扩展元组。

  元组元素迭代遍历

  object Test {

  def main(args: Array[String]) {

  val t = (4,3,2,1)

  t.productIterator.foreach{ i =>println("Value = " + i )}

  }

  }

  4.3.2. 拉链操作

  使用zip方法把元组的多个值绑在一起,以便后续处理

  注意:如果两个数组的元素个数不一致,拉链操作后生成的数组的长度为较小的那个数组的元素个数

  4.4. 列表(List)

  不可变的序列 import scala.collection.immutable._

  在Scala中列表要么为空(Nil表示空列表)要么是一个head元素加上一个tail列表。

  9 :: List(5, 2) :: 操作符是将给定的头和尾创建一个新的列表

  注意::: 操作符是右结合的,如9 :: 5 :: 2 :: Nil相当于 9 :: (5 :: (2 :: Nil))

  不可变列表

object ImmutListDemo {

    def main(args: Array[String]) {
      //创建一个不可变的集合
      val lst1 = List(1,2,3)
      //将0插入到lst1的前面生成一个新的List
      val lst2 = 0 :: lst1
      val lst3 = lst1.::(0)
      val lst4 = 0 +: lst1
      val lst5 = lst1.+:(0)

      //将一个元素添加到lst1的后面产生一个新的集合
      val lst6 = lst1 :+ 3

      val lst0 = List(4,5,6)
      //将2个list合并成一个新的List
      val lst7 = lst1 ++ lst0
      //将lst1插入到lst0前面生成一个新的集合
      val lst8 = lst1 ++: lst0

      //将lst0插入到lst1前面生成一个新的集合
      val lst9 = lst1.:::(lst0)

      println(lst9)
    }

}
可变
import scala.collection.mutable.ListBuffer

object MutListDemo extends App{
  //构建一个可变列表,初始有3个元素1,2,3
  val lst0 = ListBuffer[Int](1,2,3)
  //创建一个空的可变列表
  val lst1 = new ListBuffer[Int]
  //向lst1中追加元素,注意:没有生成新的集合
  lst1 += 4
  lst1.append(5)

  //将lst1中的元素最近到lst0中, 注意:没有生成新的集合
  lst0 ++= lst1

  //将lst0和lst1合并成一个新的ListBuffer 注意:生成了一个集合
  val lst2= lst0 ++ lst1

  //将元素追加到lst0的后面生成一个新的集合
  val lst3 = lst0 :+ 5
}
4.5. set
不可变
import scala.collection.immutable.HashSet

object ImmutSetDemo extends App{
  val set1 = new HashSet[Int]()
  //将元素和set1合并生成一个新的set,原有set不变
  val set2 = set1 + 4
  //set中元素不能重复
  val set3 = set1 ++ Set(5, 6, 7)
  val set0 = Set(1,3,4) ++ set3
  //set中的元素是随机无序的
  print(set0)
  println(set0.getClass)
}
可变
import scala.collection.mutable

object MutSetDemo extends App{
  //创建一个可变的HashSet
  val set1 = new mutable.HashSet[Int]()
  //向HashSet中添加元素
  set1 += 2
  //add等价于+=
  set1.add(4)
  set1 ++= Set(1,3,5)
  println(set1)
  //删除一个元素
  set1 -= 5
  set1.remove(2)
  println(set1)
}

上一篇:HTML5工具初识之网页编辑器

下一篇:Scala系列之集合操作函数

QQ技术交流群

千锋大数据官方①群
857910996

加入群聊