对象和集合

1、重写hashCode和equals()

类型相同,值相等

hashCode()绑定的方法,equals重写,hashcode()必须重写

1)、equals() 约定:

自反:x.equals(x)

对称性:x.equals(y)=true 、y.equals(x)=true

传递性:x.equals(y)=true、y.equals(z)=true、则 z.equals(x)=true

一致性: 多次调用没有变化的统一,x,y结果相同

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

2)、hashcode()

Object类中的默认散列方法总是为每一个对象产生一个唯一号,即使重写的equals方法认为两个或多个对象是相等的也是这样。

如果两个相等,则它们的散列码也必须相等。

无论实例变量是否相等都为他们返回相同的值这样地的hashCode()仍然是相等的。

hashCode()约定:

x.equals(y)==true 则必须 x.hashCode()==y.hashCode()

x.equals(y)==false x.hashCode()与y.hashCode()无要求

x.hashCode()==y.hashCode() 可以 x.equals(y)==true

x.hashCode()!=y.hashCode() 可以 x.equals(y)==false

可以均匀的散列每个桶里一个值,也可以只有一个桶每个实例的hashCode()相同。

关键点:瞬态变量不要用于确定或等于对象的散列码。

2、集合

接口:Collection、Set、Sorted Set、List、Map、Sorted Map

设计类:

Collection.Set 的设计类:关心不重复

  • HashSet:散列码   未分类、未排序的集合
  • LinkedhashSet (HashSet 的排序版,插入顺序)
  • TreeSet   (分类 自然排序)

Collection.List 的设计类:与索引相关

  • ArrayList:(索引)
  • Vector:(ArrayList的同步版)
  • LinkedList (双链表)

Map的设计类:关心唯一标识符

  • HashMap: 未分类、未排序的集合
  • Hashtable:HashMap的同步版
  • TreeMap:(分类的 自然排序)
  • LinkedhashMap:(HashMap 的排序版,插入顺序)

3、垃圾搜集

符合删除条件的:

1)、空引用

2)、重新为新引用赋值

3)、隔离引用

垃圾搜集申请:System.gc()申请

Finalize()对任何指定的对象,Finalize将执行一次。在gc()前挽救对象仅一次。

4、使用Wrapper类与字符串、封装器和对象一起使用equals()方法

StringBuffer没有实现对equals、hashCode的重写

Wrapper类与集合、String重写equals、hashCode()方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值