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>
  • 相关阅读:
    剑指offer-重建二叉树
    Java集合学习-总体框架
    leetcode-6-ZigZag Conversion
    海拔高度与大气密度的关系函数
    C++ 获取文件夹下的所有文件名
    01-复杂度1. 最大子列和问题
    00-自测5. Shuffling Machine
    00-自测4. Have Fun with Numbers
    00-自测3. 数组元素循环右移问题
    00-自测2. 素数对猜想
  • 原文地址:https://www.cnblogs.com/duhuo/p/5081318.html
Copyright © 2011-2022 走看看