zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    foxmail邮箱在代理环境下不能使用解决方法。
    Win7下IE8无法打开https类型的网站解决方法笔记
    重新注册IE组件
    Web开发者的六个代码调试平台
    仿Material UI框架的动画特效
    JS几种数组遍历方式以及性能分析对比
    js 函数提升和变量提升
    彻底掌握this,call,apply
    深入理解requestAnimationFrame
    基于iscroll.js实现下拉刷新和上拉加载特效
  • 原文地址:https://www.cnblogs.com/donaldjohn/p/1968443.html
Copyright © 2011-2022 走看看