zoukankan      html  css  js  c++  java
  • javascript Set data structures

    集合(set)是一组无序的,但彼此之间又有一定相关性的数据集。每个成员在数组中只能出现一次。

    在使用集合(set)之前最好先理解一下内容:

    1、不包含任何成员的集合称为空集合。

    2、如果两个集合的成员都相等,两个集合相等。

    3、如果一个集合中的成员都在另一个集合中,则两个具有父子集的关系。

    在集合中我们常用的操作就是:求集合的并集,交集,补集等。

    下面我们基于数组该构建一个集合(Set)类。

    <html>
    <head>
        <title>Date Example</title>
    </head>
    <body>
    <div id="content"></div>
    <input type="button" value="Set InnerHTML" onclick="testDate()">
    
    <script type="text/javascript">
    
      function Set() {
       this.dataStore = [];
    
       //  添加元素 
       this.add = function (data){
            if (this.dataStore.indexOf(data) < 0) {
                  this.dataStore.push(data);
                   return true;
            } 
            else {
                  return false;
           }
       };
    
       //   删除元素  
       this.remove = function (){
            var pos = this.dataStore.indexOf(data);
            if (pos > -1) {
                this.dataStore.splice(pos,1);
                return true;
            }
            else {
                return false;
            }
       };
    
       this.size = function (){
            return this.dataStore.length;
       };
    
       //   求两个集合的并集
       this.union = function (set){
            var tempSet = new Set();
            for (var i = 0; i < this.dataStore.length; ++i) {
                tempSet.add(this.dataStore[i]);
            }
            for (var i = 0; i < set.dataStore.length; ++i) {
                if (!tempSet.contains(set.dataStore[i])) {
                tempSet.dataStore.push(set.dataStore[i]);
                }
            }
            return tempSet;
        };
    
      //   查询集合中是否包含某个元素   
       this.contains = function (data{
           if (this.dataStore.indexOf(data) > -1) {
              return true;
           }
          else {
             return false;
           }
       };
    
       //  两个集合的交集 
       this.intersect = function (set){
           var tempSet = new Set();
           for (var i = 0; i < this.dataStore.length; ++i) {
              if (set.contains(this.dataStore[i])) {
              tempSet.add(this.dataStore[i]);
              }
            }
            return tempSet;
       };
    
       //   查询set是不是现在集合的子集 
       this.subset = function (set){
            if (this.size() > set.size()) {
               return false;
            }
            else {
               for each (var member in this.dataStore) {
                  if (!set.contains(member)) {
                     return false;
                  }
               }
            }
           return true;
       };
    
       //   两个集合的补集
       this.difference = function (){
            var tempSet = new Set();
            for (var i = 0; i < this.dataStore.length; ++i) {
                if (!set.contains(this.dataStore[i])) {
                   tempSet.add(this.dataStore[i]);
                }
           }
           return tempSet;
       };
       this.show = function (){
           return "[" + this.dataStore + "]";
       };
    }
    
    
    </script>
    </body>
    </html>
  • 相关阅读:
    Apache Kafka:下一代分布式消息系统
    深入理解Java之线程池
    JAVA中线程同步的方法(7种)汇总
    String、StringBuffer与StringBuilder之间区别
    Java中是否可以继承String类,为什么
    JAVA4种线程池的使用
    一分钟教你知道乐观锁和悲观锁的区别
    java常见面试题及答案 11-20(JVM)
    springmvc中的页面解析器ViewResolver不起作用,变量输出字符串的解决方案
    SpringMVC默认欢迎页面的问题
  • 原文地址:https://www.cnblogs.com/duhuo/p/5081318.html
Copyright © 2011-2022 走看看