社区
Java EE
帖子详情
如何利用hashcode分段呢 !
xu101q
2012-10-10 11:09:33
假如 我有100W 条数据,我想利用hashcode 来 将这100W 条数据,化为5段,应该怎么做呢 !!
...全文
144
5
打赏
收藏
如何利用hashcode分段呢 !
假如 我有100W 条数据,我想利用hashcode 来 将这100W 条数据,化为5段,应该怎么做呢 !!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xu101q
2012-10-10
打赏
举报
回复
取模运算 ,感觉不靠谱!
MiceRice
2012-10-10
打赏
举报
回复
首先设计一个 hashcode 算法,尽量均匀。
然后:
int seg = hash(data) % 5; // 那么分段取值就是 0~4
xu101q
2012-10-10
打赏
举报
回复
我已经采用, java MD5 hash 计算, 然后使用, 然后使用 16进制的形式 在
00000000000000000000000000000000 --------- ffffffffffffffffffffffffffffffff 里化段, 然后将这些数据散列不同的段中 !
MiceRice
2012-10-10
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
取模运算 ,感觉不靠谱!
[/Quote]
最常用的方法,性能也基本上最优。
或者说出你潜在的需求或担心的问题。
xu101q
2012-10-10
打赏
举报
回复
而且 我需要预先化好其 没段的开始和结束位置
字节跳动、腾讯java面试.zip
讲讲类的实例化顺序,比如父类静态数据,构造函数,字段,子类静态数据,构造函数,字段,当 new 的时候,他们的执行顺序。 是什么,他们内部原理分别是什么,比如存储方式,
hashcode
,扩容,默认容量等。 JAVA8 的 ConcurrentHashMap 为什么放弃了
分段
锁,有什么问题吗,如果你来设计,你如何设计。 有没有有顺序的 Map 实现类,如果有,他们是怎么保证有序的。 抽象类和接口的区别,类可以继承多个类么,接口可以继承多个接口么,类可以实现多个接口么。
jdk-8u112-windows-x64.zip
在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化 原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的
hashcode
方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容 如果内容一样,后一个value会将前一个value的值覆盖,如果不一样,在1.7的时候,后加的放在前面,形成一个链表,形成了碰撞,在某些情况下如果链表 无限下去,那么效率极低,碰撞是避免不了的 加载因子:0.75,数组扩容,达到总容量的75%,就进行扩容,但是无法避免碰撞的情况发生 在1.8之后,在数组+链表+红黑树来实现hashmap,当碰撞的元素个数大于8时 & 总容量大于64,会有红黑树的引入 除了添加之后,效率都比链表高,1.8之后链表新进元素加到末尾 ConcurrentHashMap (锁
分段
机制),concurrentLevel,jdk1.8采用CAS算法(无锁算法,不再使用锁
分段
),数组+链表中也引入了红黑树的使用
Java面向对象入门至精通
掌握面向对象的三大特征封装 、 继承 、多态 ;掌握java中的类,变量,方法,构造器,代码块,包,接口,内部类,Lambda表达式,枚举;以及toString()方法、equals方法、
hashCode
方法、instanceof修饰符等等;课程《Java零基础至高级应用》从基础开始进行系统教学,全套课程精细讲解,高级课程超过其他机构30%的课程量,经过我们全套课程系统学习的同学,可轻松从事Java高级工程师或系统架构师岗位,课程提供全套代码笔记其它相关素材及答疑服务,可谓是低投资高回报!
jdk1.8.0_60_linux.zip
在jdk1.8中对hashMap等map集合的数据结构优化。hashMap数据结构的优化 原来的hashMap采用的数据结构是哈希表(数组+链表),hashMap默认大小是16,一个0-15索引的数组,如何往里面存储元素,首先调用元素的
hashcode
方法,计算出哈希码值,经过哈希算法算成数组的索引值,如果对应的索引处没有元素,直接存放,如果有对象在,那么比较它们的equals方法比较内容 如果内容一样,后一个value会将前一个value的值覆盖,如果不一样,在1.7的时候,后加的放在前面,形成一个链表,形成了碰撞,在某些情况下如果链表 无限下去,那么效率极低,碰撞是避免不了的 加载因子:0.75,数组扩容,达到总容量的75%,就进行扩容,但是无法避免碰撞的情况发生 在1.8之后,在数组+链表+红黑树来实现hashmap,当碰撞的元素个数大于8时 & 总容量大于64,会有红黑树的引入 除了添加之后,效率都比链表高,1.8之后链表新进元素加到末尾 ConcurrentHashMap (锁
分段
机制),concurrentLevel,jdk1.8采用CAS算法(无锁算法,不再使用锁
分段
),数组+链表中也引入了红黑树的使用
java8集合源码分析-Outline:大纲
java8 集合源码分析 JAVA: 基本语法 static 修饰变量 方法 静态块(初始化块 构造函数 ) 静态内部类() 静态导包 final() transient() foreach循环原理() volatile底层实现() equals和
hashcode
(, ) string,stringbuffer和stringbuilder(,,,, ) 伪泛型(, , ) 自动装箱(,) Try-with-resources() 序列化 反序列化(, , , ) interface 和 abstract class 区别 变长参数( ) 枚举详解(, , , , ) Null详解() Java 8 默认方法() 集合类(底层实现原理,实现类的优缺点) List ArrayList(, ) LinkedList(, ) Map(,) Hashtable() HashMap(,) HashMap怎么判断两个元素不是同一个(equals 和
hashcode
) 多线程操作后果(,) rehash() ConcurrentHashMap() 锁
分段
技术() 读是否加锁,为什么() 迭代器是强一
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章