美文网首页
Java的hashCode()有时候是不靠谱的。

Java的hashCode()有时候是不靠谱的。

作者: 听海吹牛逼的声音 | 来源:发表于2019-03-19 13:45 被阅读0次

hashCode的function只保证在同一个execution里面,同一个object的hash code是相同的。对于基础类型,包括map之类的,java能保证同样的内容能即使不是同一个obj,也可以得到相同的hashcode。但是对于自定义的结构体,同样的内容并不能得到同样的hashcode。

回想起了之前同事以及自己干过的蠢事。用一个obj的hashcode来直接判cache或者做A/Btest 分流。。。

看一些文章+讨论。
https://martin.kleppmann.com/2012/06/18/java-hashcode-unsafe-for-distributed-systems.html

https://news.ycombinator.com/item?id=4127664

https://stackoverflow.com/questions/2983444/why-hashcode-returns-the-same-value-for-a-object-in-all-consecutive-executions

public class EqualityIndex {

    private int index;

    public EqualityIndex(int initialIndex) {
        this.index = initialIndex;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 3; ++i) {
            EqualityIndex ei = new EqualityIndex(2);
            System.out.println(ei.hashCode());
        }

        for (int i = 0; i < 3; ++i) {
            String str = new String("hah");
            System.out.println(str.hashCode());
        }

        for (int i = 0; i < 3; ++i) {
            Map<String, String> map = new HashMap<>();
            map.put("a", "b");
            System.out.println(map.hashCode());
        }

        for (int i = 0; i < 3; ++i) {
            List<String> list = new ArrayList<>();
            list.add("aaaaa");
            System.out.println(list.hashCode());
        }

    }

}


output:
1673605040
186276003
1681433494
103055
103055
103055
3
3
3
92567616
92567616
92567616

相关文章

  • Java的hashCode()有时候是不靠谱的。

    hashCode的function只保证在同一个execution里面,同一个object的hash code是相...

  • 严肃的爱情不靠谱

    严肃的爱情不靠谱 浪漫的爱情不靠谱 稚嫩的爱情不靠谱 单恋的爱情不靠谱 唐突的爱情不靠谱 爱情不靠谱

  • 我网恋了,你说靠谱吗?

    网恋,异地恋,现实中的恋爱,这只是恋爱的形式,说网恋不靠谱,说异地不靠谱, 其实不靠谱的是时间,不靠谱的是人心。...

  • 靠谱与不靠谱

    从来不觉得自己是一个靠谱的人,我码不靠谱的文字,做不靠谱的事情,谈不靠谱的恋爱,养不靠谱的鱼,种不靠谱的花,甚至开...

  • 直觉有时候是不靠谱的

    我发现很多人很喜欢用直觉做决定,当然也包括我。 其实直觉是什么,我们都说不准,只是一种感觉,一种预感罢了,虚无缥缈...

  • 不靠谱

    有时候,你的为人处世就是不靠谱了。因为你这个本来就没有靠谱的环境、朋友、交集。做什么事情都是不靠谱的。 ...

  • 讲真,我删了几个异性朋友

    都是不靠谱的人,是我太不靠谱,才有机会和不靠谱的异性有联系,无所谓了,我不靠谱,那我就把自己变的靠谱起来,把不靠谱...

  • 不靠谱

    关税又来 特不靠谱 真不靠谱

  • 网上有哪些靠谱与不靠谱的兼职

    时间有限,直接说2个靠谱的项目,与说哪些是大概率不靠谱的! 先说大概率不靠谱:这个点可以一锤子打死所有不靠谱的项目...

  • 不靠谱姑娘与靠谱先生。(一)

    文/浅笑咩 不靠谱姑娘和靠谱先生的认识,全因不靠谱姑娘的闺蜜肖肖而结缘的。闺蜜们看着不靠谱姑娘一直单身,替不靠谱姑...

网友评论

      本文标题:Java的hashCode()有时候是不靠谱的。

      本文链接:https://www.haomeiwen.com/subject/vmygmqtx.html