数据机构之集合结构

几乎每种编程语言中都会默认提供集合结构,集合结构比较常见的实现方式是哈希表(后续会学习),由于还没有学习到哈希表,我们这里暂且用jJs中的对象来封装一个集合类,集合通常是一组无序的,不能重复的元素构成,和数学中的集合名词比较相近,但是数学中的集合范围更大一些,也允许集合中的元素重复,而在数据结构集合中的元素是不允许重复的,集合可以看成一个特殊的数组,其特殊之处在于元素没有顺序,也不能重复,没有顺序意味着不能通过下标值访问,不能重复意味着相同的对对象在集合中只能存在一份,我们这里学习集合还是跟之前以一样,封装一个集合类(实际上在新版本的es6中已经默认提供了集合类Set,但是我们这里为了了解集合内部的实现机制,还是自己来封装一个Set类)

集合类的实现

// 封装集合类
let _Set = (function() {
  // 内部使用对象进行实现
  let items = {};
  return class {
    // 增
    add(value) {
      // 判断是否存在
      if (this.has(value)) return false;
      items[value] = value;
      return true;
    }
    // 删
    remove(value) {
      if (!this.has(value)) return false;
      delete items[value];
      return true;
    }
    // 返回内容
    values() {
      return Object.values(items);
    }
    // 判断是否存在
    has(value) {
      return items.hasOwnProperty(value);
    }
    // 清空
    clear() {
      items = {};
    }
    // 计算大小
    size() {
      return Object.keys(items).length;
    }

  };
})();

// 实例化
let cs = new _Set();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容