Set集合框架与泛型

一. 集合框架Set(HashSet哈希表存储、重复元素存储底层探究)## 标题

1.Set集合自带去重复方法。
元素是无序,元素不可以重复,针对于基本数据类型已经String;Set集合框架与泛型
Set集合框架与泛型
2.Set集合如果是引用数据类型的话,他并不会去重复。如下。
Set集合框架与泛型
3 如果引用数据类型要想去重复的话,重写hashCode方法 ,和equals方法,就会形成下面这种状况。
Set集合框架与泛型
输出的结果,重写equals方法和hashCode方法重复去掉了,如下。
Set集合框架与泛型
4.优化代码,hashCode每一次是必然要调用的,所以没有什么好优化的,但是equals方法不一样 如图:
Set集合框架与泛型
二.## 标题 ## 集合框架TreeSet(自然排序、数据结构二叉树、比较器排序) 红黑树。
1.自然排序 。
第一种排序方式维护性较差,也就是程序拓展性较差
Set集合框架与泛型
如果是这样的话就会报错,因为porson不能转换为Comparable接口;
Set集合框架与泛型
如果要想排序的话,继承Comparable接口,继续排序,返回的值有正数,负数和0。
this代表还有存放到容器里面的对象,o代表以及存放到容器里面的对象。为了直观的看出效果我还加了一个toString方法。这个只是年龄排序。
Set集合框架与泛型
Set集合框架与泛型
如果说加上名字排序的话多加一层判断 如图。
注意:给元素添加比较性的时候,先判断主要条件 这里的主要条件是年龄,再判断次要条件。
Set集合框架与泛型
2第二种方式:实现于comparator接口,让容器具有比较性。针对于之前的需求发生改变。直接来一个比较器,实现comparator接口 ,比较person。如图:
Set集合框架与泛型

泛型

1.泛型的好处,就在于将运行时的错误转换到编译期,还提升了代码的健壮性,简化了代码。
如图:图下是没有加泛型的,如果不输出的话看是很难看出错误。
Set集合框架与泛型
这个是加了泛型的 ,很直观的就看出了错误。如图:
Set集合框架与泛型