day15
<02 集合框架(TreeSet)>
Set:无序,不可重复元素。
| -- HashSet:数据结构是哈希表,线程是非同步的。
保证元素唯一性的原理:判断元素的hashCode值是否相同。
如果相同,还会继续判断元素的equals方法,是否为true。
| -- TreeSet:可以对Set集合中的元素进行排序
底层数据结构是二叉树。
保证元素唯一性的依据:comparteTo()方法return 0. (通过compareTo()方法 来确定元素是否相同。
TreeSet排序的第一种方式:让元素自身具备比较性。元素要实现Comparable接口,覆盖compareTo方法。
这种方式也称为元素的自然顺序,或者叫做默认顺序。
TreeSet的要求是 往里面存的对象 必须具有比较性。(去找一个接口。只要实现的这个接口,就具有了比较性。 使用那个接口中的方法。 多态)
实现了Comparable接口的对象 就具有比较性。该接口中有个compareTo()方法。
实现Compable接口,并复写compareTo()方法,在里面判断主要条件、次要条件。
String类 本就实现了Comparable接口,所以它里面有compareTo()方法。Java中很多对象都自身具有比较性,就是这个原因。
记住:排序时,当主要条件相同时,一定要判断一下次要条件。
<03 集合框架(二叉树)>
TreeSet底层的数据结构
底层二叉树存取。根据compareTo()的返回值 来o确定是放左边还是右边:1,右子树,-1 左子树,0表示相等你,所以不插入。
读取时 默认采用先序 来遍历。
<04 集合框架(实现Comparator)方式排序>
让元素自身 具备比较性; 让容器自身 具备比较性。 如果两者同时存在,则以后者为主。
比较器 比较常用些。
接口:对外提供的功能扩展。comparator就是。
课堂笔记:
【1】
Set:无序,不可重复元素 * |--HashSet:数据结构是哈希表,线程是非同步的 * 保证元素唯一性的原理:判断元素的hashCode是否相同。 * 如果相同,还会继续判断元素的equals方法,是否为true。 * * |--TreeSet:可以对Set集合中的元素进行排序。 * 底层数据结构是二叉树。 * 保证元素唯一性的依据: * compareTo方法return 0. * * TreeSet排序的第一种方式:让元素自身具备比较性。 * 元素需要实现Comparable接口,覆盖compareTo方法. * 这种方式也称为元素的自然顺序,或者叫做默认顺序。 * * TreeSet的第二种排序方式。 * 当元素自身不具备比较性时,或者具备的比较性不是所需要的。 * 这时就需要让集合自身具备比较性。 * 在集合初始化时,就有了比较方式。 * * 参与构造函数。
【2】
* 当元素自身不具备比较性,或者具备的比较性不是所需要的时, * 这时需要让 容器自身 具备比较性。 * 定义一个比较器,将比较器作为参数传递给TreeSet集合的构造函数 * * 当两种排序都存在时,以比较器为主。 * * 定义一个类,实现Comparator接口,覆盖compare()方法。 * * 以return 0 来判断元素相同