JavaScript中对象数组 根据某个属性值进行排序
HashMap
1. 初始化
1. 初始容量(默认是16)
2. 负载因子(默认是0.75)
3. 容量的数量就是桶的数量; 当超过负载因子*容量这个阈值,那么hashmap就会扩容
2. put操作
1. 当key为null时
1. 判断null的桶是否为空,
为空,直接插入一个Entry
不为空,替换该Entry的value值
2. 当key不为null
2. 计算key hashcode的hash值
3. 计算hash值所在的桶位置
4. 判断桶位置是否已经存在数据
1. 没有数据,那么就桶的头部插入该键值对
2. 如果有数据,那么就判断链表中的每一个数据的key equal 新加的key
如果相等,那么直接替换value
如果不相等,那么就在桶的头部插入该键值对
3. addEntry添加Entry操作
1. 根据桶的索引,获取链表
2. 新建一个Entry节点插入链表
3. 如果有需要,扩容,当前容量的2倍
4. get操作
1. 当key为null
1. 获取value值(可以为null)
2. 当key不为null
1. 获取桶位置
2. 在链表中判断等key的value,返回该value
3. 不存在key
返回null值
ConcurrentHashMap
1. put操作
1. value为null抛出异常
2. value不为null
1. 通过hash的高位获取segmens的索引值
2. 对segment上锁
3. 容量不满足,扩容
4. 定位到具体的桶
5. 在桶上判断key是否存在
1.如果存在替换新值,返回旧值
2. 如果不存在 添加一个节点,放置在链表头部,返回null
6. 释放锁
2. get操作
1. 根据hash定位到段,委托segment.put()
2. 判断是否有桶的hash值与hash值相等
1. 如果相等找到指定value
1 value为null
加锁从新获取
2 value不为nul
返回value
2. 如果不相等
返回null
3. rehash操作
1. 扩容2倍
2. 在具体的segment上重哈希
3. 重哈希都是针对单独的一个segment进行操作,也就是说最后个个段上桶的数量可能不相等
JavaScript中对象数组 根据某个属性值进行排序的更多相关文章
- JavaScript中对象数组 根据某个属性值 然后push到新的数组
原文链接 https://segmentfault.com/q/1010000010075035 将下列对象数组中,工资大于1w的员工,增加到对象数组 WanSalary中 var BaiduUser ...
- js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
js sort方法根据数组中对象的某一个属性值进行排序 sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {nam ...
- js sort方法根据数组中对象的某一个属性值进行排序
sort方法接收一个函数作为参数,这里嵌套一层函数用来接收对象属性名,其他部分代码与正常使用sort方法相同. var arr = [ {name:'zopp',age:0}, {name:'gpp' ...
- JavaScript中对象数组 作业
var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, gender, age, salary) { t ...
- JavaScript中对象数组 作业题目以及作业
var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, gender, age, salary) { t ...
- JavaScript中对象数组去重方法
在一次对后端返回的对象数组的操作时想通过indexOf()或者includes()的方法来实现对对象数组的去重但是行不通,因为用indexOf()返回的都是-1,一下记录两种对象数组(更具指定属性)去 ...
- JavaScript中对象数组,如何给对象添加一个新属性
var a =[{name: 'Tom',age:20},{name: 'Tom2',age:22}] 现在给a数组中的第一个对象添加性别属性 a[0]['gender']='women' a[0][ ...
- JavaScript中对象数组 作业 题目如下
var BaiduUsers = [], WechatUsers = []; var User = function(id, name, phone, gender, age, salary) { t ...
- 小程序开发之改变data中数组或对象的某一属性值
前言:在小程序的开发中,我们在view中便利data中数组或对象时,很多情况下需要在js中动态改变数组或者对象中某一香的属性值. 效果图: 我给大家总结了案例如下: wxml如下: <scr ...
随机推荐
- Android最佳实践之SystemBar状态栏全版本适配方案
前言 自从MD设计规范出来后,关于系统状态栏的适配越受到关注,因为MD在5.0以后把系统状态栏的颜色改为可由开发者配置的,而在5.0之前则无法指定状态栏的颜色,所以这篇就说说使用Toolbar对系统状 ...
- UNIX网络编程——fcntl函数
fcntl函数提供了与网络编程相关的如下特性: 非阻塞式I/O. 通过使用F_SETFL命令设置O_NONBLOCK文件状态标志,我们可以把一个套接字设置为非阻塞型. 信号驱动式I/O. 通过使用F ...
- ORACLE EBS常用表及查询语句(最终整理版)
建议去看参考二 参考一: call fnd_global.APPS_INITI ...
- Android学习之Animation(一)
3.0以前,android支持两种动画模式,Tween Animation,Frame Animation,在android3.0中又引入了一个新的动画系统:Property Animation,这三 ...
- Windows2003下用Dreamweaver打开CodeSmith文件设置办法
.在第一行的ASP,字符串后面添加CST,2.找到行ASP,ASA:ActiveServer Pages修改为ASP,ASA,CST:ActiveServer Pages 二.用记事本打开文件2:C: ...
- 【Android 应用开发】 Application 使用分析
博客地址 : http://blog.csdn.net/shulianghan/article/details/40737419 代码下载 : Android 应用 Application 经典用法; ...
- Linux下修改Oracle数据库字符集命令
常见情形:从服务器备份Oracle数据库后再到本地机器上还原Oracle数据库的时候经常会碰见数据库字符编码不一致的情况,可以用以下命令来修改本地的Oracle数据库字符编码,然后顺利还原Oracle ...
- Leetcode_19_Remove Nth Node From End of List
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41778305 Given a linked list, r ...
- XBMC源代码分析 6:视频播放器(dvdplayer)-文件头(以ffmpeg为例)
XBMC分析系列文章: XBMC源代码分析 1:整体结构以及编译方法 XBMC源代码分析 2:Addons(皮肤Skin) XBMC源代码分析 3:核心部分(core)-综述 XBMC源代码分析 4: ...
- 9、Libgdx的输入处理
(官网:www.libgdx.cn) 不同的平台有着不同的输入方式.桌面用户可以通过键盘和鼠标与应用进行交互,基于浏览器的游戏也是这样.在Android中,鼠标被触摸屏所替代,通常没有实体键盘.And ...