数据结构84-集合常见操作之子集代码

简介: 数据结构84-集合常见操作之子集代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>集合封装</title>
</head>
<body>
    <script>
        function Set(){
            this.items={}
            Set.prototype.add=function(value){
                if(this.has(value)){
                    return false
                }
                //判断集合中是否又这个元素
                this.items[value]=value
                return true
            }
            Set.prototype.has=function(value){
                this.items.hasOwnProperty(value)
            }
            Set.prototype.remove=function(value){
                if(!this.has(value)){
                    return false
                }
                delete this.items[value]
                return true
            }
            Set.prototype.clear=function(){
               this.items={}
            }
            Set.prototype.size=function(){
               return Object.keys(this.items).length
            }
            Set.prototype.values=function(){
               return Object.keys(this.items)
            }
            Set.prototype.union=function(otherSet){
               //创建一个新的集合
               var unionSet=new Set()
               var values=this.values()
               for(var i=0;i<values.length;i++){
                unionSet.add(values[i])
               }
               values=otherSet.values()
               for(var i=0;i<values.length;i++){
                unionSet.add(values[i])
               }
               return unionSet
            }
            Set.prototype.intersection=function(otherSet){
                var intersection=new Set()
                var values=this.values()
               for(var i=0;i<values.length;i++){
                unionSet.add(values[i])
                if(otherSet.has(item)){
                    intersection.add(item)
                }
               }
            return intersection
            }
            Set.prototype.difference=function(otherSet){
                var difference=new Set()
                for(var i=0;i<values.length;i++){
                 var item=values[i]
                 if(!otherSet.has(item)){
                    difference.add(item)
                 }
               }
               return difference
            }   
            Set.prototype.subset=function(otherSet){
                var values=this.values()
                for(var i=0;i<values.length;i++){
                 var item=values[i]
                 if(!otherSet.has(item)){
                    return false
                 }
               }
               return true
            }
        }
    </script>
</body>
</html>
相关文章
|
5天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
25 5
|
18天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
47 1
|
2月前
|
存储 Java 开发者
Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效
【10月更文挑战第19天】在软件开发中,随着项目复杂度的增加,数据结构的组织和管理变得至关重要。Java中的Map接口提供了一种优雅的方式来管理数据结构,使代码更加清晰、高效。本文通过在线购物平台的案例,展示了Map在商品管理、用户管理和订单管理中的具体应用,帮助开发者告别混乱,提升代码质量。
32 1
|
2月前
|
算法 安全 Java
【用Java学习数据结构系列】探索Java集合框架的无尽秘密pro
【用Java学习数据结构系列】探索Java集合框架的无尽秘密pro
19 1
|
2月前
|
存储 算法 索引
HashMap底层数据结构及其增put删remove查get方法的代码实现原理
HashMap 是基于数组 + 链表 + 红黑树实现的高效键值对存储结构。默认初始容量为16,负载因子为0.75。当存储元素超过容量 * 负载因子时,会进行扩容。HashMap 使用哈希算法计算键的索引位置,通过链表或红黑树解决哈希冲突,确保高效存取。插入、获取和删除操作的时间复杂度接近 O(1)。
32 0
|
2月前
05(数据结构考研)树相关操作代码
05(数据结构考研)树相关操作代码
29 0
|
2月前
|
算法
04(数据结构考研)串相关操作代码
04(数据结构考研)串相关操作代码
20 0
|
2月前
03(数据结构考研)队列相关操作代码
03(数据结构考研)队列相关操作代码
41 0
|
1月前
|
C语言
【数据结构】栈和队列(c语言实现)(附源码)
本文介绍了栈和队列两种数据结构。栈是一种只能在一端进行插入和删除操作的线性表,遵循“先进后出”原则;队列则在一端插入、另一端删除,遵循“先进先出”原则。文章详细讲解了栈和队列的结构定义、方法声明及实现,并提供了完整的代码示例。栈和队列在实际应用中非常广泛,如二叉树的层序遍历和快速排序的非递归实现等。
165 9
|
1月前
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
30 1