迭代器

33 阅读1分钟
package caseclass

object class2 {
  // Set是可以去重的
  // 创建一些对象,把他们装入Set,看看是否能去重!
  class Stu(var name:String, var age:Int) {
    override def equals(obj: Any): Boolean = {
      val other = obj.asInstanceOf[Stu]
      other.age == age && other.name == name
    }

    override def toString: String = s"Stu(${name}, ${age})"
  }

  def main(args: Array[String]): Unit = {
    val stu1 = new Stu("小花", 18)
    val stu2 = new Stu("小花", 18)

    println(stu1)

    println(stu1 == stu2)

    val set1 = Set(stu1, stu2)
    println(set1)
  }
}

1. 序列类(有序、可重复)

  • List:不可变的链表结构,按顺序存储元素,常用操作(head/tail/::)很高效。示例:val list = List(1, 2, 3)
  • Array:可变的数组(和 Java 数组兼容),长度固定,支持随机访问。示例:val arr = Array(1, 2, 3)
  • ArrayBuffer:可变的动态数组(类似 Java 的ArrayList),支持动态增删元素。示例:val buf = scala.collection.mutable.ArrayBuffer(1, 2, 3)
  • Vector:不可变的高效随机访问集合,兼顾了链表和数组的优点,适合大量元素的场景。示例:val vec = Vector(1, 2, 3)
  • Queue:队列(先进先出),分为不可变Queue和可变mutable.Queue。示例:val queue = scala.collection.mutable.Queue(1, 2, 3)

2. 映射类(键值对)

  • Map:存储键值对的集合,键唯一。默认是不可变,可变版本是mutable.Map。示例:val map = Map("name" -> "小花", "age" -> 18)

3. 其他常用集合

  • Stack:栈(后进先出),可变版本mutable.Stack
  • LinkedList:可变的双向链表,支持前后遍历。
  • Stream:惰性序列(类似List,但元素是按需计算的

输出结果

image.png