ADT 基本属性&操作
* 1. 获取集合长度
* 2. 获取集合大小
* 3. 循环遍历集合
* 4. 迭代器
* 5. 生成字符串
* 6. 是否包含
* */
/*
*  ADT 基本属性&操作
*     1. 获取集合长度
*     2. 获取集合大小
*     3. 循环遍历集合
*     4. 迭代器
*     5. 生成字符串
*     6. 是否包含
* */
object ADT extends App {
  var arr = Array(1, 2, 3, 4, 5)
  var list = List(1, 2, 3, 4, 5)
  var map = Map("x" -> 1, "y" -> 2, "z" -> 3, "h" -> 4)
  var tuple = (1, "2", 3, "4")
  //1. 获取集合长度
  println(arr.length)
  println(list.length)
  //println(map.length) map无length
  //println(tuple.length) tuple无length

  println("=================")
  //2. 获取集合大小
  println(arr.size) //调用length方法
  println(list.size) //调用length方法
  println(map.size)
  //println(tuple.size) tuple无size

  println("=================")
  //3. 循环遍历集合
  for (e <- arr) printf(s"${e}-")
  for (e <- list) printf(s"${e}-")
  for (e <- map) printf(s"${e}-")

  //for (e <- tuple.productIterator) printf(s"${e}-")
  println("===================")

  def show(e: Int) = printf(s"${e}#")

  def show(e: (String, Int)) = printf(s"${e._1} : ${e._2}#")

  arr.foreach(show)
  list.foreach(show)
  map.foreach(show)

  println("===============")
  //4. 迭代器
  var arr_iter = arr.iterator
  var list_iter = list.iterator
  var map_iter = map.iterator
  var tuple_iter = tuple.productIterator
  println(arr_iter)
  println(list_iter)
  println(map_iter)
  println(tuple_iter)

  //5. 生成字符串
  println(arr.mkString("#"))
  println(list.mkString("#"))
  println(map.mkString("#"))
  //println(tuple.mkString("#"))

  //6. 是否包含
  println(arr.contains(1))
  println(list.contains(1))
  println(map.contains("x")) //是否包含指定key
  //println(tuple.contains)

}