集合介绍
在Java中已经设计好了一些类和接口,和我们之前模拟的容器类功能一样。像这样的类和接口,在Java中已经写好了,我们叫做集合;
看成是一些容器;装数据,感觉容器是一种高级数组, 集合相比数组而言,还要高级一点,集合可以存储任意多个任意类型的数据
集合类ArrayList
1.ArrayList基于数组的容器类实现
2.使用ArrayList构造方法,创建ArrayaList容器类对象,获得一个容器
3.调用容器类方法增删改查数据
4.详细查看容器类ArrayList容器类API文档
集合类LinkedList
1.基于链表结构的容器类实现
2.LinkedList 属于java.util包下面,也实现Iterable接口,说明可以使用迭代器遍历;
3.查看API调用LinkedList集合类构造方法创建一个对象,得到一个Linked对象得到一个容器
4.查看API使用基本方法,进行数据增删改查
5.自定义容器–添加不重复元素
集合类HashSet
HashSet判断重复分析
1.一般我们认为是判断数据是否重复
2.但是我们添加的数据种类很多,还有不同的对象
3.实际我们比较数据重复,或者对象重复,那么判断标准一般考虑对象的信息是否一致
其实HashSet判断添加元素【对象】是否相同的规则:
①判断hashcode
②判断equals
如果两个对象的hashCode值相等,并且equals返回为true 就表示对象相等(重复)
在覆写equals方法的时候,应该是当前对象this和传入的对象进行比较,并且应该根据业务对象的字段值进行比较(也就是比较age,name字段值)
HashSet特点:
①不能添加重复元素,无序的(添加顺序和打印顺序不一致:不记录添加顺序);
②HashSet容器对象:添加完一种类型的数据之后,还能够添加其他类型
集合类TreeSet
TreeSet特点:
①不能添加重复元素,无序的(添加顺序和打印顺序不一致:不记录添加顺序);
②TreeSet容器对象:添加一种类型之后不能再添加其他类型
1.TreeSet 特点是不能重复的;通过添加add方法,放进去的元素也应该和当前的TreeSet里面的元素进行比较。在里面是怎样比较的?
2.TreeSet里面可以添加各种各样的元素,那它自己是不是也有自己的对比规则;但是在TreeSet里面,不能写具体的规则; 添加的元素,它们的比较规则可能不同
TreeSet[自然排序]重复判断
1)无论怎样添加对象,结果都只有一个,因为0表示相等;
2)一般存在3种情况,-1,0,1表示;
3)这里只需要记住 0 就可以,-1,1不用去记住;
写完之后,测试一下,就可以了,如果你记住的,可能规则不一样,-1,1代表的含义也不一样
TreeSet[定制排序]-比较器
a.自然排序:此接口强行对实现它的每个类的对象进行整体排序。称为类的自然排序;
b.自然排序也可以这样理解:
实现了Comparable接口的类的对象(也就是Comparable的实例) 具有自然排序的能力. 如果要把对象往TreeSet里面放,必须是Comparable的实例
定制排序
当日代码
TreeSet总结
.TreeSet是Set接口的一个事项,添加唯一不重复元素的集合
2.本质也是一个类,集合类,容器类,用来装数据
3.得到一个容器,调用构造方法就好了
4.该容器的特点
1.无序[添加顺序和打印数据不保证一致] 但是内部实际是进行了排序的
2.不重复
3.线程不安全
4.可以添加任意类型的元素
5.一个容器对象,添加了一个类型,就不能再添加其他类型
6.可以用迭代器因为实现了Iterable
5.添加的元素必须具备自然排序能力,或者一个集合容器添加了定制比较器的,而是是添加元素类型的一个比较器
自然然排序:类必须实现 comparable 接口 覆写comparTo方法
定制排序 :自定义一个比较器的类实现 Comparator 接口 覆写compare方法