Object类下面的三个方法很实用
1.String toString();返回对象的字符串便是形式
平时打印的集合是一个地址,很长的一长溜,是个字符串是
getClass().getName() + '@' + Integer.toHexString(hashCode())
是这货,那想要输入字符串的时候就需要用到toString方法
2.boolean equals(Object obj);只是一些其他对象是否相等于此。
Object类下面的方法比较是两个对象的地址,不看你内容的
为什么要重写equals方法呢,因为父类的需求满足不了子类的需求是需要重写父类的方法
在Set集合中,添加对象时,这个对象的类是Object的子类,用的是obj类下面的equals方法 ,object类下面的equals方法是比较地址,现在要比较内容,所以就要重写
3.int hashCode();
哈希码值:在Object类下面,将内存地址(十六进制的值)转为十进制的值,此时这个十进制的值就叫hash码。
当重写equals方法,通常需要重写hashCode方法,以便维护hashcode方法的通用合同
Set集合
Set集合也是用来存储数据的
Set也是一个接口
父接口是Collection
存储数据的特征: 无序的 不可重复的
Set接口有两个实现类:
HashSet:
依靠hash值进行存储的,如果两个元素hash值一样的话,就不再存储了
TreeSet:
底层是二叉树,对存储数据进行自然排序
hashSet类
HashSet这个类的方法和Collection接口和Set接口下面一样的
也有自己的方法,和ArrayList很想
HashSet存集合对象
在泛型<>中写想要添加的对象的类名,就可以添加对象元素
TreeSet集合
也是实现了Set集合,可以保证数据唯一性,存储也是无序的
TreeSet集合中存对象
如果想要在TreeSet集合中添加对象的话
要去实现Comparable这个接口
int comparable(T o) 将此对象与指定的对象进行比较进行排序
将此对象与指定的对象进行比较以进行排序。 返回一个负整数,零或正整数,因为该对象小于,等于或大于指定对象



