Javascript学习数据结构--集合(Set实现)

本文探讨了JavaScript中的Set数据结构,包括HashSet、TreeSet和LinkedHashSet的特性。着重讲解了Set不允许重复元素的特性,以及如何通过对象而非数组实现集合以提高效率和保证唯一性。还详细介绍了创建集合、并集、交集、差集和子集操作的实现,并提供了相应的代码测试示例。
摘要由CSDN通过智能技术生成

定义

set是不允许重复元素的集合类型,set体系最常用的是HashSet ,TreeSet, LinkedHashSet。相同的元素是放不进去set的。

HasHSet是使用HashMap实现的,只是将value固定为一个静态对象,使用key保证集合的唯一性,但是不保证顺序性。

LinkedHashMap是继承自HashSet,具有HashSet的优点,内部使用链表维护了插入顺序。

创建集合

let items = {};

我们使用对象而不是数组来表示集合(items)的原因有两个:

  • 第一个是因为在使用数组时,大部分方法的时间复杂度是O(n)。即我们需要迭代整个数组直到找到要找的那个元素,在最坏的情况下需要迭代数组的所有位置。如果数组有更多元素的话,所需的时间会更长。另外,数组是元素的一个有序集合。为了保证元素排列有序,它会占用更多的内存空间。
  • 另一个就是因为Javascript的对象不允许一个键指向两个不同属性,也保证了集合里的元素都是唯一的。

函数说明及注释

//如果值在集合中, 返回true, 否则返回false。
    this.has = function (value) {
        // return value in items;
        return items.hasOwnProperty(value);
    };
    //向集合添加一个新的项。
    this.add = function (value) {
        if (!this.has(value)) {
            items[value] = value; //检查该元素是否在集合中,进行添加
            return true;
        }
        return false;
    };

    // 从集合移除一个值
    this.remove = function (value) {
        if (this.has(value)) {
            delete items[value]; //存在该元素,进行移除
            return true;
        }
        return false;
    };
    //移除集合中的所
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值