Set集合所具备的一些特点:
1.无序化
2.不能重复
3.无索引
Set集合所具有的现有类:
1.Treeset
2.hashset
首先也是通过Set s =new Hashset();这种多态的形式来创建对象
其次如果是通过add方法去添加一些string类的对象,集合将满足set的所有特点。
但是当自己写一个自定义类,并且通过new方法创建一个对象,这时会在堆内存当中开辟一块空间,不同的对象将具备不同的地址值。
也就意味着集合添加这些对象的时候,即使是具有相同属性值的对象,也会被加载到集合当中,现实生活中所认知的同一个人也会被加载
,集合就不具备了不能重复的特点。
hashset的去重:
通过在自定义的对象类中重写Hashcode以及equals的方法来实现
1.通过调用属性的hashcode值来判断是否相等,不相等则输入集合
2.通过重写equals的方法来判断具体的属性值是否相等,来区分不同的对象
泛型:
泛型
广泛的类型
E:代表的是任意类型的对象,把E改成相应的类型,此容器就只能存储此类型的对象。
Collection
泛型的作用:
就是用来规定此容器存储数据的类型
泛型一般运用于集合,但是在类与属性上也可以添加
Collection<? extendsE>
Collection<? extends Animal>
Collection能添加Animal产生继承关系的所有类的对象
TreeSet:是Set集合的一个具体子类
特点:具有自然排序的功能
Collections的sort()的功能是一样的
Tree存储自定义对象时,需要实现comparable接口,并且自定义排序规则实现去重的效果。
1.自定义类实现comparable接口,实现comparable();在此方法中定义规则
2.使用Comparator接口的匿名内部类,在compare()方法中定义排序规则
3.使用静态内部类实现comparator接口,实现compare()