闪存散列代码的String类实现

来源:互联网 发布:nodejs 生成json文件 编辑:程序博客网 时间:2024/06/03 23:39
public class String {private int hash; public int hashCode(){if(hash!=0){return hash;}for(int i=0;i<length();i++){hash = hash*31+(int)charAt(i);return hash;}}}


因为散列表中费时多的部分就是计算hashCode,在String类中的hashCode方法包含一个重要的优化,每个String对象内部都会存储它的hashCode值,该值初始值是0,但若hashCode被调用,那么这个值就被记住,因此如果hashCode被同一个对象两次调用,则可以避免昂贵的重新计算这个技巧叫做闪存散列黛米。

闪存散列代码之所以有效是因为String类是不可变的。




0 0
原创粉丝点击