java_42--45

1.栈(stack)后进先出
队列(queue)先进先出

2.当向ArrayList添加一个对象(实际上是对象的引用),实际上就是将该对象放置到了ArrayList底层所维护的数组中;当向LinkedList中添加一个对象时,实际上linkedList内部会生成一个Entry对象,该Entry对象的结构如下:

Entry
{
    Entry previous;
    Object element;
    Entry next;
}

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

3.关于Object类的equals方法的特点
1)自反性:x.equals(x)应该返回true;
2)对称性:x.equals(y) 为true,那么 y.equals(x)也为true.
3)传递性:x.equals(y) 为true, y.equals(z)为true,那么 x.equals(z)也为true.
4)一致性:x.equals(y)第一次调用为true,第二次,第三次调用也为true,前提是x,y都没有变化。
5)对于非空引用x, x.equals(null)返回false.

4.关于Object类的hashCode()方法的特点:
1)在java应用的一次执行过程中,对于同一个对象的hashCode方法的多次调用,他们应该返回同样的值(前提是该对象信息没有发生改变)
2)对于两个对象来说,如果使用equals方法返回true,那么这两个对象的hashCode()值一定是相同的。
3)对于两个对象来说,如果使用equals方法比较返回false,那么这两个对象的hashCode()值不要求一定不同(可以相同,可以不同),但是如果不同,则可以提高性能。
4)对于Object类来说,不同的Object对象的hashCode()值是不同的(Object类的hashCode()值表示的是对象的地址)

5.当使用HashSet()的时候,hashCode()就会得到调用。判断已经存储在集合中的对象的Hashcode值,是否与增加的对象的hashcode值相同。如果不一致—直接加进去;如果一直—再进行equals方法比较。如果equals返回true,表明对象已经加进去了,就不会再增加新对象;如果返回false,就直接加进去。

6.如果重写equals方法,那也要重写hashCode()方法;重写hashCode()方法,那就要重写equals方法。一般两个方法一起改变。

7.eclipse中的source–generate hashCode() and equals会自动重写hashCode() 和equals方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值