• Java SE 第四十四,五讲 使用LinkedList实现Stack和Queue,hashCode和equals深度剖析与原


    1.当向ArrayList添加一个对象时,实际上就是将该对象放置到了ArrayList底层所维护的数组当中;当向LinkedList中添加一个对象时,实际山LinkedList内部会生成一个Entry对

    象,该Entry对象的结构为:
    Entry

    {

    Entry previous;

    Object element;

    Entry next;

    }

    其中的Object类型的元素element就是我们想LinkedList中所添加的元素,然后Entry有构造好了向前和向后的引用previous,next,最后又将Entry对象加入到了链表当中,换句话说,Linkedlist中所维护的是一个个的Entry对象.

    2.栈与队列:

    实现

    3.Set:是一个接口,不能包含重复的元素.实现的类:Hashset

    4.Hash.set的toString()方法,调用元素的toString()方法.

    5.Set是没有顺序的,没有重复元素的.

    6.关于Object类的equals方法的特点:

    ①自反:X.equals(X);应该返回true.

    ②对称性:x.equals(y)为true,y.equals(x)也返回true.

    ③传递性:x.equals(y)为true,y.equals(z)为true,那么x.equals(z)为true.

    ④一致性:x.equals(y)的第一次 为true,那么x.equals(y)的第二次,第三次,第n次调用也应该为true,前提条件是在比较之间没有修改x也没有修改y,

    ⑤对于非空引用x,x.equals(null)应该返回false

    7.hashCode()

    关于Object类的hashCode()方法的特点:

    ①在Java应用的一次执行过程当中,对于同一个对象的hashCode方法的多次调用,他们应该返回同样的值(前提是该对象的信息没有发生变化)

    ②对于两个对象来说,如果使用equals方法比较 返回true,那么这两个对象的hashCode值一定是相同的.

    ③对于两个对象来说,如果使用equals方法比较,返回false,那么着两个对象的hashCode值不要求一定不同(可以相同,可以不同), 但是如果不同则可以提高应用的性能.

    ④对于Object类来说,Object类的不同对象地hashCode值是不一样的.(Object类的hashCode值表示的对象的一个地址转化来的整数)

    8.当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hash code的值是否与增加的对象的hash code的值一直;如果不一致,直接加进去;如果一致,
    再进行equals方法的比较,如果equals()如果返回true,表示对象已经加进去了,就不会再增加新的对象,否则加进去.

    9.如果我们重写equals()时,那么也要重写hashCode()方法,反之亦然.

    10.对于String类hashCode方法,其结果仅仅于字符值有关,而且其equals()比较的是字符串的内容,因此,不能够将内同相同的String实例不能够放在同一个集合中.

    11.

    本博客内容所有权限保留,若需合作请与博主联系.博主邮箱:donaldjohn@qq.com
  • 相关阅读:
    前端总结(设计向)
    bootstrap 样式规范总结
    angular2学习---模板学习
    angular2学习 -- 基本配置学习
    前端相关小技巧以及问题总结
    认识hasLayout——IE浏览器css bug的一大罪恶根源 转
    bug 由于浏览器缓存而引起的ajax请求并没有获取到服务器最新数据从而导致的bug
    总结 好用的工具/网站/插件
    .NET FrameWork完全卸载
    ASP.NET4.0项目部署到Win7系统的IIS上
  • 原文地址:https://www.cnblogs.com/donaldjohn/p/1968443.html
Copyright © 2020-2023  润新知