Scala的Set集合

devtools/2024/11/17 23:37:11/
//设置一个Book。有三个属性:书名,作者,价格
class Book(var bookNmame:String,var author:String,var price:Double){}
object demo7 {def main(args: Array[String]): Unit = {
//    val set1 = Set(1,1,2,3,3)
//    println(set1)//创建可变S儿童,添加两本相同的书val set1 = scala.collection.mutable.Set[Book]()val book1 = new Book("西游记","吴承恩",100)val book2 = new Book("西游记","吴承恩",100)println(book1 == book2)set1 += book1set1 += book2//问题:Set可以把两本相同的书。做去重处理吗?set1.foreach(s =>{println(s.author)})}
}
//Set:特点去重
//设置一个Book。有三个属性:书名,作者,价格
class Book(var bookName:String,var author:String,var price:Double){override def equals(obj: Any): Boolean = {//判断依据是书名相同val o = obj.asInstanceOf[Book]o.bookName == bookName}override def toString: String = s"书名是:$bookName,作者:$author,价格:$price"override def hashCode(): Int = bookName.hashCode()
}
//case class 的特点
//1,数据是只读的
//2,可以省略new
//3,它内置实现了一些方法
//equals hashCode ,toString
case class BookCase(bookName:String,author:String,price:Double)object demo8 {def main(args: Array[String]): Unit = {val book1 = new Book("a","a",1)val book11 = new Book("a","a",1)val set1 = Set(book1,book11)println(set1)val book2 = BookCase("a","a",1)val book3 = BookCase("a","a",1)println(book1 == book11)println(book2 == book3)println(book1)// println会自动去调用对象的toString方法println(book2)}
}

1:case class的定义语法是什么?

case class 类名(属性名:类型,属性名:类型)

2:case class的特点?

它的属性值不能被修改

可以不写new

内置了toString,equals,hashCode特别适用于来定义数据格式


http://www.ppmy.cn/devtools/134823.html

相关文章

1+X应急响应(网络)系统加固:

系统加固: 数据库的重要性: 数据库面临的风险: 数据库加固: 业务系统加固: 安全设备加固: 网络设备加固:

深度学习神经网络创新点方向

一、引言 深度学习神经网络在过去几十年里取得了令人瞩目的成就,从图像识别、语音处理到自然语言理解等众多领域都有广泛应用。然而,随着数据量的不断增长和应用场景的日益复杂,对神经网络的创新需求也愈发迫切。本文将探讨深度学习神经网络…

linux病毒编写+vim shell编程

学习视频来自B站UP主泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 请一定遵循《网络空间安全法》!!! Linux目录介绍 /bin 二进制可执行文件(kali里面是工具一些文件)/etc 系统的管理和配置文…

用vscode编写verilog时,如何有信号定义提示、信号定义跳转(go to definition)、模块跳转(跨文件跳转)这些功能

(一)方法一:安装插件SystemVerilog - Language Support 安装一个vscode插件即可,插件叫SystemVerilog - Language Support。虽然说另一个插件“Verilog-HDL/SystemVerilog/Bluespec SystemVerilog”也有信号提示及定义跳转功能&am…

Redis设计与实现 学习笔记 第十七章 集群

Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding,水平切分)来进行数据共享,并提供复制和故障转移功能。 17.1 节点 一个Redis集群通常由多个节点(node)组成,在刚开…

gitlab容器的迁移(部署)并配置自动备份

gitlab容器的迁移(部署)并配置自动备份 本文背景为从Ubuntu服务器上迁移gitlab容器到windows并备份,若要直接拉取镜直接安装配置可直接从第二小标题参考 1、原Ubuntu的gitlab容器制作为镜像 2.1 将运行的容器制为镜像 #镜像:i…

Linux开发常用命令

文章目录 开发常用命令包管理 网络操作用户和权限系统监控nohup和screen的区别 开发常用命令 Linux开发中常用的命令非常多,以下是一些基本且重要的命令,这些命令对于日常的开发工作流程至关重要: 文件和目录操作 ls:列出目录内…

GitHub Copilot使用指南:助力开发者加速编程创新

GitHub Copilot使用指南:助力开发者加速编程创新 简介 1. GitHub Copilot的诞生背景 近年来,AI技术在各行各业迅速发展,尤其是在编程和开发领域,通过自然语言处理和机器学习,AI逐渐能够理解人类的需求和语言。GitHub…