Set的定义
Set,集合表示没有重复元素的集合,有可变(mutable)和不可变(immutable)两种类型。不可变 Set 创建后元素不能修改,可变 Set 可对元素进行添加、删除等操作,这两种类型能满足不同场景需求
Set的代码格式
语法格式:
val 变量名 = Set[类型](元素1,元素2...)
package luwenzhen01
object luxiaozhen {
def main(args: Array[String]): Unit = {
//定义一个set
val set1=Set("小珍","是","大笨蛋!!!")
println(set1)
}
}
!注意:它的元素不能重复,例如 Set(1,1) ==> Set(1)
不可变与可变 Set 的区别
- 可变(mutable),不可变(immutable)
- 可变:自己的内容可以直接修改。可以使用 +=
- 不可变:自己的内容定义好了,就不能添加,不能删除。
- Set 它是内置对象等价于 <=>
import .collection.immutable.Set
package luwenzhen01
/*
* 可变(mutable),不可变(immutable)
* 可变:自己的内容可以直接修改。可以使用 +=
* 不可变:自己的内容定义好了,就不能添加,不能删除。
* 默认使用的是 不可变的。
* Set 它是内置对象,不需要import,可以直接使用。等价于 import scala.collection.immutable.Set
*
*/
object luxiaozhen {
def main(args: Array[String]): Unit = {
// 分: 可变set, 不可变
// 默认情况下,使用的Set就是不可变的.
// 可变的Set
val set1 = scala.collection.mutable.Set("apple", "grape", "apple", "pear")
set1 += "banana"
println(set1)
// 不可变的Set
val course = scala.collection.immutable.Set("apple", "banana")
// 报错: course += "xxxx"
var newCourse = course + "pear"
println(newCourse)
}
}
Set常见操作
1.添加元素
对于可变 Set
我们可以使用 += 操作符来添加元素
import scala.collection.mutable.Set
val libraryBooks: mutable.Set[String] = mutable.Set("Java 编程思想", "数据结构")
libraryBooks += "算法导论"
println(libraryBooks)
对于不可变 Set
对于不可变 Set,添加元素实际上是创建一个新的 Set
import scala.collection.immutable.Set
val activities: Set[String] = Set("运动会", "文艺汇演")
val newActivities: Set[String] = activities + "科技节"
println(newActivities)
2.删除元素
对于可变 Set
我们可以使用 -= 操作符来删除元素
import scala.collection.mutable.Set
val students: mutable.Set[String] = mutable.Set("张三", "李四", "王五")
students -= "王五"
println(students)
不可变 Set
没有直接的删除方法,因为它是不可变的,需要重新创建一个新的 Set(类似添加元素)
3.查询元素是否存在
可以使用 contains 方法来检查元素是否在 Set
import scala.collection.immutable.Set
val clubMembers: Set[String] = Set("小明", "小红", "小刚")
println(clubMembers.contains("小明"))
set操作的完整代码
package xiaozhen01
/*
* set的操作
* 1.添加元素
* 2.删除元素
*3.查询元素是否存在
* 4.合并set
* 5.交集
* 6.差集
*/
object xiaozhen {
def main(args: Array[String]): Unit = {
// 可变的Set
val set1 = scala.collection.mutable.Set("apple", "grape", "apple", "pear")
//1.添加元素
set1 += "banana"
//2.删除元素grape
set1-="grape"
//3.查询元素是否存在contains 他返回一个bool值
if(set1.contains("apple")){
println(set1)
}
//4.合并set
val set2=scala.collection.mutable.Set("orange")
val set3=set1.union(set2)
println(set3)
//5.交集
val hobby1=scala.collection.mutable.Set("看书","听歌")
val hobby2=scala.collection.mutable.Set("打球","听歌")
//求交集
val rst=hobby1.intersect(hobby2)
//6.差集:一个Set中有,而另一个没有
val classes1=scala.collection.mutable.Set("语文","英语","数学")
val classes2=scala.collection.mutable.Set("物理","数学")
val rst1=classes1.diff(classes2)
println(rst1)
}
}
实训任务:
图书馆书籍管理系统相关的练习。内容要求:
- 创建一个可变 Set,用于存储图书馆中的书籍信息(假设书籍信息用字符串表示,如 “Java 编程思想”“Scala 实战” 等),初始化为包含几本你喜欢的书籍。
- 添加两本新的书籍到图书馆集合中,使用 += 操作符。
- 从图书馆集合中删除一本书,使用 -= 操作符。
- 检查某一本特定的书籍(如 “Python 从入门到实践”)是否在图书馆集合中,使用 contains 方法,并输出结果。
- 创建另一个可变 Set,表示另一个图书馆的书籍集合。
- 求出两个图书馆书籍集合的并集,使用 union 方法,并输出结果。
- 求出两个图书馆书籍集合的交集,使用 intersect 方法,并输出结果。
- 求出当前图书馆相对于另一个图书馆的差集,使用 diff 方法,并输出结果
import scala.collection.mutable
object LibManager {
def main(args: Array[String]): Unit = {
// 1. 创建可变 Set
val lib1 = mutable.Set("Java编程", "Scala实战", "算法")
println("初始书籍: " + lib1)
// 2. 添加新书
lib1 += "Python入门"
lib1 += "C++基础"
println("添加后: " + lib1)
// 3. 删除书
lib1 -= "算法"
println("删除后: " + lib1)
// 4. 检查书是否存在
val checkBook = "Python入门"
val hasBook = lib1.contains(checkBook)
println(s"有《$checkBook》吗: $hasBook")
// 5. 创建第二个图书馆
val lib2 = mutable.Set("Scala实战", "Python入门", "计算机系统", "设计模式")
println("第二馆: " + lib2)
// 6. 并集
val union = lib1.union(lib2)
println("并集: " + union)
// 7. 交集
val intersect = lib1.intersect(lib2)
println("交集: " + intersect)
// 8. 差集
val diff = lib1.diff(lib2)
println("差集: " + diff)
}
}
运行结果如下:
初始书籍: Set(Java编程, Scala实战, 算法)
添加后: Set(Java编程, Scala实战, 算法, Python入门, C++基础)
删除后: Set(Java编程, Scala实战, Python入门, C++基础)
有《Python入门》吗: true
第二馆: Set(Scala实战, Python入门, 计算机系统, 设计模式)
并集: Set(Java编程, Scala实战, Python入门, C++基础, 计算机系统, 设计模式)
交集: Set(Scala实战, Python入门)
差集: Set(Java编程, C++基础)