首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

详解 ES 2018 新特性~

当迭代器开始执行时,会返回一个包含next()方法的对象。该方法会返回包含value和done的对象,value为下一迭代值,done为布尔值,表示迭代器是否到达终点。...异步迭代器与传统迭代器的不同之处在于,它没有返回{value, done}形式的普通对象,而是返回一个Promise,其resolve返回{value, done}对象。...调用next()会返回一个包含{value, done}的对象,而value值则变为一个promise对象 在可迭代对象上迭代的一个简单方法是使用for of,但由于异步迭代对象的value和done并不是同步指定的...匹配所有字符(包括换行符)的一种方法是使用一个包含两个短字符的字符类,比如[\d\D]。这个表达式查询数字(\d)或非数字(\D)字符。...中的一个位置,紧接该位置之前的字符序列能够匹配pattern。例如,如果您想匹配以美元、英镑或欧元表示的产品的价格,而不需要捕获货币符号,您可以使用/(?

1.1K20

各大厂都在考的 Java 集合知识点总结,不来看看???

集合 vs 数组 集合和数组都是 Java 中重要的数据结构,两者之间的区别主要有如下两点: 不同点 数组 集合 容量 初始化时指定,只能存储定长数据 保存不定长的数据 存储的数据类型 基本数据类型,对象均可...HashSet 中判断集合元素相等 不同的对象进行比较,可以有如下四种情况: 若两元素通过 equal() 方法比较返回 false,但两者的 hashCode() 返回不相等,则将其存储在不同位置;...因为向 HashSet 集合中存入一个元素时,HashSet 将调用对象的 hashCode() 获取其 hash 值,然后根据 hash 值来决定对象在 HashSet 中的存储位置; 若两元素通过...是一个链表维护的序列容器,和 ArrayList 最大的区别在于其底层实现,前者使用链表,后者使用数组,所以选用时可以根据数组和链表的特性来进行选择,主要不同有如下几点: 数组查找效率高,能够通过索引直接查找出对应元素...7.6 各 Map 类型对比 Map 类型 使用场景 底层实现 HashMap 快速查询 散列表 LinkedHashMap 迭代遍历具有顺序(插入顺序 or最近最少使用) 链表 TreeMap 具有排序

3.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Kotlin Maps:五个基本函数

    Kotlin 中maps的用途 在使用maps之前了解什么是maps。本质上,映射是键值对的集合。关键是标识符。您可以使用它来查找集合中的特定元素。该值是您要存储的数据,它与一个键相关联。...该方法接收一个键和一个值。如果映射中不存在键,则将其与值一起插入。如果它已存在于maps中,则键保持不变,新值替换旧值。 对于插入,该方法返回 null。对于替换,它返回旧值。...Remove**方法从maps删除一个键和及其相关联的值。 它接收密钥作为参数。它返回值,如果键在maps中不存在,则该值为 null。...Clear** 方法删除maps中的所有项目。 它不接收或返回任何参数。它清空maps,将maps的大小设置回零。使用此操作后,您将无法访问之前存在的任何键或值。...Iterator** 方法是有来遍历map的内容。 具体来说,它返回一个迭代器对象。从某种意义上说,您使用迭代器将maps转换为列表。

    2.4K10

    使用Puppeteer构建博客内容的自动标签生成器

    headless属性是一个布尔值,用于设置是否以无头模式运行浏览器,即是否显示浏览器界面。如果设置为false,则可以看到浏览器的操作过程,方便调试。...获取首页上所有博客文章的链接,并保存到一个数组中打开目标博客网站的首页后,我们可以使用page.$$eval()方法来获取首页上所有博客文章的链接,并保存到一个数组中。...例如,我们可以使用CSS选择器a.post-link来匹配所有包含博客文章链接的a元素;然后在回调函数中,我们可以使用Array.from()方法来将匹配到的元素转换为数组4....然后,我们可以使用collection.insertMany()方法来将所有博客文章的信息作为文档插入到集合中,并返回一个Promise对象。...这个方法接受一个数组作为参数,数组中的每个元素都是一个文档对象。最后,在Promise对象的回调函数中,我们可以打印出插入结果,并关闭数据库连接。

    25510

    2024年java面试准备--集合篇

    按照对象插入的顺寻保存数据,允许多个Null元素对象,可以使用iterator迭代器遍历,也可以使用get(int index)方法获取指定下标元素。...(1)如果key相同,则覆盖原始值; (2)如果key不同(出现冲突),则将当前的key-value放入链表中 获取时,直接找到hash值对应的下标,在进一步判断key是否相同,从而找到对应值。...,如果是树型节点,创造树型节点插入红黑树中; 6、若不是红黑树,创建普通Node加入链表中;判断链表长度是否大于 8,大于则将链表转换为红黑树; 7、插入完成之后判断当前节点数是否大于阈值,若大于,则扩容为原数组的二倍...原因:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集 合在被遍历期间如果内容发生变化,就会改变modCount的值。...该队列不允许使用 null 元素也不允许插入不可比较的对象 PriorityQueue 队列的头指排序规则最小那个元素。如果多个元素都是最小值则随机选一个。

    40631

    *ArrayList实现原理及源码学习(JDK 1.8.0)*

    size不为0时,接下来的if条件语句是判断c.toArray()返回的结果是否正确,如果不正确则利用Arrays.copyOf方法将集合c中的元素复制到elementData数组中;size为0则将EMPTY_ELEMENTDATA...的1.5倍扩容,如果1.5倍扩容不能满足最小容量,则将最小容量作为扩容后的数组容量;如果按1.5倍扩容超过MAX_ARRAY_SIZE,则对newCapacity进行合理性约束; (4)最后,拷贝原数组中的数据到扩容后的新数组...image.png 注:和上述两个添加元素的操作不同之处在于是批量插入元素,需要先将集合转成数组,若传入的集合为null将抛出空指针异常,其他操作类似。...= size,则将出现异常后面的数据全部复制覆盖到数组中,如下源码所示: image.png 3.修改元素方法 image.png 注: 对指定索引进行合法性检查,oldValue保留旧值,然后用新值覆盖旧值...4.查询元素方法 image.png 5.遍历ArrayList中的对象(迭代器方法) image.png 注: 在获取集合的迭代器的时候,去new了一个Itr对象,而Itr实现了Iterator接口,

    48801

    Java集合从菜鸟到大神演变

    TreeSet TreeSet可以实现排序等功能的集合,它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中,并保证该集合元素按照“升序”排列。...LinkedHashSet 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入的次序),于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。...List(列表): ArrayList 内部结构基于数组实现,可以对元素进行随机的访问,向ArrayList中插入与删除元素的速度慢。...若容量增加系数 >0,则将容量的值增加“容量增加系数”;否则,将容量大小增加一倍。Vector的克隆函数,即是将全部元素克隆到一个数组中。和ArrayList不同,Vector中的操作是线程安全的。...它们都是通过包装集合类中的抽象类获得,产生不同的行为。

    99860

    jq---方法总结

    对象 // 你同样可以使用jQuery对象的方法对这些临时的DOM元素进行操作,或者将它们插入到文档的指定位置。...属性 find("ul") // 返回匹配这些div元素中的所有后代ul元素的jQuery对象 children() // 返回匹配这些ul元素中的所有子代元素的jQuery对象 $("selector...表示当前迭代的数组元素或对象的属性值 // this 与 value 相同 alert( i + " = " + value ); // 如果函数return false,将终止遍历 }); // $...= $.map( obj, function(value, i){ // 注意参数顺序与each()不同 // value 表示当前迭代的数组元素或对象的属性值 // i 表示当前迭代元素的索引或对象的属性名称..., i){ // 注意参数顺序与each()不同 // value 表示当前迭代的数组元素 // i 表示当前迭代元素的索引 // this 指向全局对象(window) return i % 2 ==

    3K20

    JavaScript 高级程序设计(第 4 版)- 集合引用类型

    ,从数组最小索引开始,前者返回第一个匹配的元素,后者匹配第一个匹配元素索引,可接受第二个参数,用于指定断言函数内部this的值 迭代方法 迭代方法接收两个参数:以每一项为参数运行的函数,可选的作为函数运行上下文的作用域对象...内部使用SameValueZero比较操作,相当于使用严格对象相等的标准来检查匹配性 # 顺序与迭代 与Object类型的一个主要差异就是,Map实例会维护键值对的插入顺序,因此可以根据插入顺序执行迭代操作...集合也使用SameValueZero操作,相当于使用严格对象相等的标准来检查匹配性 # 顺序与迭代 Set会维护值插入时的顺序,因此支持按顺序迭代 集合实例提供一个迭代器,能以插入顺序生成集合内容,可以通过...可迭代对象中的每个值都会按照迭代顺序插入到新实例中 初始化之后可以使用 add()再添加新值,可以使用 has()查询,还可以使用 delete()删除 add()方法返回弱集合实例,因此可以把多个操作连缀起来...# 不可迭代值 WeakSet 中的值任何时候都可能被销毁,所以没必要提供迭代其值的能力 也用不着像 clear()这样一次性销毁所有值的方法 WeakSet 之所以限制只能用对象作为值,是为了保证只有通过值对象的引用才能取得值

    687100

    【Java提高十八】Map接口集合详解

    若不为空则先计算key的hash值,然后根据hash值搜索在table数组中的索引位置,如果table数组在该位置处有元素,则通过比较是否存在相同的key,若存在则覆盖原来key的value,否则将该元素保存在链头...其中Dictionary类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。...put方法的整个处理流程是:计算key的hash值,根据hash值获得key在table数组中的索引位置,然后迭代该key处的Entry链表(我们暂且理解为链表),若该链表中存在一个这个的key对象,那么就直接替换其...相对于put方法,get方法就会比较简单,处理过程就是计算key的hash值,判断在table数组中的索引位置,然后迭代链表,匹配直到找到相对应key的value,若没有找到返回null。 ?...当然也不是简单的插入,在HashMap中的处理过程如下:获取索引位置的链表,如果该链表为null,则将该元素直接插入,否则通过比较是否存在与该key相同的key,若存在则覆盖原来key的value并返回旧值

    1.1K60

    深度解析HashMap:探秘Java中的键值存储魔法

    如果存在,则更新相应的值;如果不存在,则将新的键值对插入。检查是否需要进行扩容: 在插入键值对后,会检查当前HashMap的大小是否超过了阈值。...返回结果: 如果找到了匹配的键值对,则返回对应的值;如果没有找到匹配的键值对,则返回 null。...该方法返回的 Map 对象会对所有访问进行同步,但性能相对较低。...在迭代时修改HashMap:在使用迭代器遍历HashMap时,如果在遍历过程中修改了HashMap的结构(比如添加或删除元素),会导致ConcurrentModificationException异常。...解决方法:在迭代时,应该使用迭代器的相关方法来进行元素的移除,而不是直接调用HashMap的remove方法。另外,可以考虑使用并发安全的ConcurrentHashMap来避免这个问题。

    13310

    深入剖析LinkedList:揭秘底层原理

    Java中的LinkedList就是基于双向链表实现的,所以它能够高效地支持插入、删除等操作,同时也提供了迭代器和列表迭代器等许多方便的操作。...extends E> c) { // 调用无参构造函数 this(); // 将参数 c 中的所有元素添加到新创建的 LinkedList 对象中 addAll(c);}/**... pred, succ; // 根据插入位置确定 succ 和 pred 的值 // 如果插入位置在末尾,则将 succ 设置为 null,将 pred 设置为最后一个节点 if...null // 如果 o 为 null,则说明要删除的元素是 null 值 if (o == null) { // 因此需要遍历 LinkedList 中的所有节点并查找 item...对于频繁的插入和删除操作,LinkedList通常比ArrayList更加高效。ArrayList的特点:基于动态数组实现,内部使用数组来存储元素。支持随机访问,通过索引可以快速访问元素。

    10510

    面了十多家,总结出20道JavaScript 必考的面试题!

    splice() 方法用于向数组中 插入、删除或替换元素。返 回一个新的数组对象,这一数组是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。...都是遍历数组或者对象的方法 forEach: 对数组的每一个元素执行一次提供的函数(不能使用return、break等中断循环),不改变原数组,无返回值 let arr = ['a', 'b', 'c'...因此,在使用 for...in 循环时,可以使用 hasOwnProperty() 方法来判断一个属性是否为对象自身的属性 for…of: 用来遍历一个可迭代对象(iterable object)中的元素...需要注意的是,for...of 循环只能用于遍历可迭代对象,例如数组、字符串、Map、Set 等,而不能用于遍历普通对象。...如果构造函数返回的是一个非对象值(如基本类型),则返回新创建的对象实例。

    19930

    📚从ES7到ES12,了解JavaScript的新特性与语法演变

    如果 fromIndex 为负数,则从数组的末尾开始计算。 1.3 返回值 一个布尔值。如果数组包含指定的元素,则返回 true,否则返回 false。...它允许在进行迭代时异步地获取序列的下一个值。 1.2 异步迭代器协议 异步迭代器对象必须实现一个名为 Symbol.asyncIterator 的方法,该方法返回一个异步迭代器对象。...异步迭代器对象应该实现一个名为 next 的异步方法,该方法返回一个 Promise,解析为一个包含 value 和 done 属性的对象。 value:表示迭代器返回的值。...city: 'New York', country: 'USA' } 三、Object spread properties 扩展属性 3.1 定义 Object spread properties 允许使用扩展运算符将一个对象的所有属性拷贝到另一个对象中...3.2 使用场景 在不同的环境中,获取全局对象有不同的方式: 在浏览器中可以使用 window 或 self 在 Web Workers 中可以使用 self 或 globalThis 在 Node.js

    39330

    深入理解ES6--块级作用域、字符串、正则、数组

    javascript中的常量如果是对象,则对象中的值可以修改。...模板字面量 可以显示地使用\n来指明插入新行的位置 let message = `name: ligang\nage: 28` 在一个模板字符串中引用另一个 let name = 'ligang'...如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。...yield 3; } } let ary4 = Array.from(numbers, (value) => value + 1) console.log(ary4) // [2, 3, 4] 注意:如果一个对象既是类数组又是可迭代的...(callback[, thisArg]) 如果要在数组中根据某个条件查找匹配的元素,那么find()方法和findIndex()方法可以很好地完成任务;如果只想查找与某个值匹配的元素,则indexOf

    65931

    揭秘Java中的瑞士军刀——HashMap源码解析

    插入 当我们向HashMap中插入一个键值对时,首先会使用键的hashCode()方法计算出其在数组中的一个位置,然后检查该位置是否已经有Node对象存在。...查找 当我们需要查找一个键对应的值时,同样会先计算出键的hashCode()值,然后根据该值找到数组中的一个位置。...删除 当我们需要从HashMap中删除一个键值对时,首先会根据键的hashCode()值找到数组中的一个位置,然后检查该位置的Node对象是否包含我们要删除的键。...根据给定的哈希值、键、值等信息,找到要移除的节点。如果节点存在且满足匹配条件(matchValue为true时),则将节点从链表中移除,并返回该节点;否则返回null。...具体解释如下: 根据给定的哈希值、键、值等信息,在哈希表中找到要移除的节点。 如果节点存在且满足匹配条件(matchValue为true时),则将节点从链表中移除,并返回该节点;否则返回null。

    18230

    用简单的方法学习ECMAScript 6

    const freezObj = Object.freeze({}); 解构 解构允许我们在支持匹配数组和对象的条件下,使用模式匹配进行绑定。...数组,字符串,Map对象,Set对象,DOM数据结构(正在使用中的)都是可迭代的iterable对象。 因此,用简单的话来说,迭代器就是一种结构,每次调用它时都会按序列返回下一个结果。...对我来说没有必要把所有逻辑都放进for-of循环来做一个迭代的工作,我只需要创建一个有意义的可迭代类,然后把我的逻辑都放在其中,然后我就可以在不同的地方用for-of循环使用我的类,并且可以很简单地实现迭代工作...Node.js社区中,有很多只导出一个值的模块。我们可以让模块只导出一个类或函数。...比如我们可以在一个for-of循环中使用它。 map.keys(); // values() 返回一个Map中的值可迭代的对象。

    1.8K41

    Java 语言基础 (常用类的概述和使用, String 类的概述和使用, 可变字符串类和日期相关类, 集合类库)

    , int count) 使用value数组中下标从 offset 位置开始的 count 个字符来构造对象 String(char[] value) 使用 value 数组中的所有内容构造对象 String...记录多个类型相同的数据内容时,声明一个一维数组。 记录多个类型不同的数据内容时,则创建一个对象。 记录多个类型相同的对象数据时,创建一个对象数组。 记录多个类型不同的对象数据时,则准备一个集合。...是经典迭代的“简化版”。 语法格式 执行流程 不断地从数组/集合中取出一个元素赋值给变量名并执行循环体,直到取完所有元素为止。...其中 LinkedHashSet 类与 HashSet 类的不同之处在于内部维护了一个双向链表,链表中记录了元素的迭代顺序,也就是元素插入集合中的先后顺序,因此便于迭代。...其中 LinkedHashMap 类与 HashMap 类的不同之处在于内部维护了一个双向链表,链表中记录了元素的迭代顺序,也就是元素插入集合中的先后顺序,因此便于迭代。

    1K30

    【两万字】面试官:听说你精通集合源码,接我二十个问题!

    这个接口提供了一个iterator()方法可以构造一个Iterator接口对象。然后我们可以使用这个迭代器对象依次访问集合中的元素。...remove(Object obj),从集合中删除等于obj的对象,如果有匹配的对象被删除,返回true。 containsAll(Collection other),从这个集合中删除所有与other集合中的元素不同的元素。如果由于这个调用改变了集合,返回true。 clear(),从这个集合中删除所有的元素。...null相关联,则将其与给定的非空值相关联。...(E e); /** * 如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中 * 如果指定的 collection 也是一个 set,则 addAll 操作会实际修改此

    61230
    领券