集合的实现
2023-02-18 16:30:13 时间
前言
集合是没有重复值且有顺序的数据结构
实现思路和代码
集合类
function Set() {
this.items = {}
}
基础集合具备以下方法
- 判断元素是否在集合中
has(value) {
//使用对象原型方法判断元素是否在集合中
return this.items.hasOwnProperty(value)
}
- 集合中添加元素
add(value) {
//判断集合中是否存在要添加的元素
if(this.has(value)) {
return false
}
//添加元素到集合中
this.items[value] = value
return true
}
- 删除集合中的元素
remove(value) {
//判断集合中是否存在要删除的元素
if(!this.has(value)) {
return false
}
delete this.items[value]
return trues
}
- 清空集合
clear() {
this.items = {}
}
- 获取集合大小
size() {
return Object.keys(this.items).length
}
- 获取集合所有元素
values() {
return Object.keys(this.items)
}
集合运算的实现
- 并集运算
union(otherSet) {
//创建新集合存储
let unionSet = new Set()
//获取当前集合的所有元素
let values = this.values()
//添加当前集合所有元素到新集合
for(let i = 0; i < values.length; i++) {
unionSet.add(values[i])
}
//重新赋值values
values = otheret.values()
//第二个集合所有元素添加到新集合
for(let i = 0; i < values.lenght; i++) {
unionSet.add(values[i])
}
return unionSet
}
- 交集运算
intersection(otherSet) {
//声明存储交集的集合
let intersection = new Set()
//获取当前集合所有元素
let values = this.values()
//遍历集合所有元素
for(let i = 0; i < values.length; i++) {
let item = values[i]
//判断参数集合中是否存在当前元素 存在就添加到交集集合中
if(otherSet.has(item)) {
intersection.add(item)
}
}
return intersection
}
- 差集运算
difference(otherSet) {
//声明差集集合
let difference = new Set()
//获取当前集合所有元素
let values = this.values
//遍历所有元素
for(let i = 0; i < values.length; i++) {
let item = values[i]
//判断参数集合是否存在当前元素 不存在就添加到差集集合中
if(!otherSet.has(item)) {
difference.add(item)
}
}
return difference
}
- 子集运算
isSubsetOf(otherSet) {
//当前集合大于参数集合直接返回false
if(this.size() > otherSet.size()) return false
//获取当前集合所有元素
let values = this.values()
//遍历所有元素
for(let i = 0; i < values.length; i++) {
//判断参数集合是否包含元素 不包含就说明当前集合不是参数集合的子集
if(!otherSet.has(values[i])) {
return false
}
}
return true
}
代码测试
let set = new Set()
set.add('swt')
set.add('mff')
console.log(set.has('swt'))
set.remove('swt')
console.log(set.values())
console.log(set.size())
set.clear()
console.log(set.values())
let other = new Set()
other.add('cyw')
other.add('swt')
console.log(set.union(other))
console.log(set.intersection(other))
console.log(set.difference(other))
console.log(set.isSubsetOf(other))
相关文章
- AutoCAD2007软件下载地址及安装教程--cad所有版本!
- Auto CAD2015软件下载地址及安装教程--cad所有版本!
- Windows云服务器,msconfig → 引导 → 高级选项,不要乱调处理器个数,可能导致黄色感叹号网络不通
- AutoCAD2004软件下载地址及安装教程--cad所有版本!
- AutoCAD2008软件下载地址及安装教程--cad所有版本!
- AutoCAD2014软件下载地址及安装教程--cad所有版本!
- 音频处理软件 Adobe Audition 2020 Mac 版安装教程
- PE格式:手写PE结构解析工具
- [软件] - Adobe Audition 2019 直装版 au软件全版本下载
- 人员离岗自动识别系统
- 河道水文标尺识别系统
- Audition 2021软件下载 au软件全版本下载
- Audition 2022软件下载(更新)AU软件全版本下载
- Auto CAD2017软件下载地址及安装教程--cad所有版本!
- Auto CAD2016软件下载地址及安装教程--cad所有版本!
- Auto CAD2019软件下载地址及安装教程--cad所有版本!
- AutoCAD2005软件下载地址及安装教程--cad所有版本!
- Auto CAD2018软件下载地址及安装教程--cad所有版本!
- Au软件概述 AU软件全版本下载
- 【攻防演练】从钓鱼上线到内网漫游