Map和Set总结

Set
	|-- HashSet
		底层的数据结构哈希表
		不保证迭代顺序,特别是不保证迭代顺序恒久不变(无序)
		存储null
		不同步
	|-- LinkedHashSet
		HashSet的子类
		底层的数据结构是哈希表+双向链表
		哈希表保证了元素的唯一性
		链表定义了迭代的顺序,迭代的顺序就是元素插入的顺序
		存储null
		不同步
	|-- TreeSet
		底层的数据结构是红黑树
		如果创建对象时没有传入比较器,元素就按自然顺序比较
		如果创建对象时传入了比较器,元素就按比较器中定义的规则进行比较
		元素按比较规则从小到大排序
		不同步
		API:
			E first()
			E last()
			E pollFirst()
			E pollLast()
			
			E ceiling(E e)
			E floor(E e)
			E higher(E e)
			E lower(E e)
			// 视图技术
			NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) 
Map
	概述:
	API:
		增(改):
			V put(K key, V value)
			void putAll(Map<? extends K, ? extends V> m)
		删:
			V remove(K key)
			void clear()
		查:
			V get(K key)
			boolean containsKey(K key)
			boolean containsValue(V value)
		
		获取集合属性:
			int size()
			boolean isEmpty()
		
		遍历:
			Set<Map.Entry<K,V>> entrySet()
			Set<K> keySet()
			Collection<V> values()
			

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JS中的SetMap都是ES6引入的新数据类型,下面是它们的区别和用法: 1. Set Set是一种无序且唯一的集合,它的成员都是唯一的,没有重复的值。Set的主要作用是去重和数组去重一样,但是它比数组去重更加高效。 Set的常用方法有: - add(value):向Set实例添加一个值,返回Set实例本身。 - delete(value):从Set实例中删除一个值,返回一个布尔值,表示删除是否成功。 - has(value):判断Set实例中是否包含某个值,返回一个布尔值。 - clear():清空Set实例,没有返回值。 - size:返回Set实例的成员总数。 示例代码: ```javascript const set = new Set([1, 2, 3, 2, 1]); set.add(4).add(5); console.log(set); // Set(5) {1, 2, 3, 4, 5} set.delete(4); console.log(set); // Set(4) {1, 2, 3, 5} console.log(set.has(2)); // true console.log(set.size); // 4 set.clear(); console.log(set); // Set(0) {} ``` 2. Map Map是一种键值对的集合,和Object类似,但是Map的键可以是任何类型,而且Map中的键值对是有序的。Map的主要作用是存储和查找数据,以键值对的形式存储数据。 Map的常用方法有: - set(key, value):向Map实例添加一个键值对,返回Map实例本身。 - get(key):获取Map实例中指定键对应的值,如果不存在则返回undefined。 - delete(key):从Map实例中删除指定键值对,返回一个布尔值,表示删除是否成功。 - has(key):判断Map实例中是否包含某个键,返回一个布尔值。 - clear():清空Map实例,没有返回值。 - size:返回Map实例的键值对总数。 示例代码: ```javascript const map = new Map([ ['name', '张三'], ['age', 18] ]); map.set('gender', '男').set('age', 20); console.log(map); // Map(3) {"name" => "张三", "age" => 20, "gender" => "男"} console.log(map.get('name')); // "张三" map.delete('gender'); console.log(map); // Map(2) {"name" => "张三", "age" => 20} console.log(map.has('age')); // true console.log(map.size); // 2 map.clear(); console.log(map); // Map(0) {} ``` 总结SetMap都是ES6引入的新数据类型,它们可以很好地解决一些问题,如去重和存储数据等。Set适合存储一组不重复的数据,而Map适合存储一组键值对。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值