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,但元素是按需计算的
输出结果