『Head First Java』第16章 数据结构 读书笔记

hashCode()与equals()的相关规定

  • API文件有对对象的状态制定出必须遵守的规则:
  • 如果两个对象相等,对其中一个对象调用equals()必须返回true。也就是说,若a.equals(b)则b.equals(a)
  • 如果两个对象有相同的hashcode值,它们也不一定是相等的。但若两个对象相等,则hashcode值一定是相等的
  • 因此若equals()被覆盖过,则hashCode()也必须被覆盖
  • hashCode()的默认行为是对在heap上的对象产生独特的值。如果你没有override过hashCode().则该class的两个对象怎样都不会被认为是相同的
  • equals()的默认行为是执行==的比较。也就是说会去测试两个引用是否对上heap上同一个对象。如果equals()没有被覆盖过。两个对象永远都不会被视为相同的,因为不同的对象有不同的字节组合
  • a.equals(b)必须与a.hashCode()==b.hashCode()等值。反之,则否。

ArrayList不是唯一的集合

  • 虽然ArrayList会是最常用的,但偶尔还是会有特殊情况。下面列出几个较为重要的
  • TreeSet
  • 以有序状态保持并可防止重复
  • HashMap
  • 可用成对的name/value来保存与取出
  • LinkedList
  • 针对经常插入或删除中间元素所设计的高效率集合(实际上ArrayList还是比较实用)
  • HashSet
  • 防止重复的集合,可快速地找寻相符的元素
  • LinkedHashMap
  • 类似HashMap,但可记住元素插入的顺序,也可以设定成依照元素上次存取的先后来排序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值