-
1.特点
- TreeSet是用来排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
-
2.使用方式
-
a.自然顺序(Comparable)
-
TreeSet类的add()方法中会把存入的对象提升为Comparable类型
-
调用对象的compareTo()方法和集合中的对象比较
- 根据compareTo()方法返回的结果进行存储
-
-
b.比较器顺序(Comparator)
-
创建TreeSet的时候可以制定 一个Comparator
-
如果传入了Comparator的子类对象, 那么TreeSet就会按照比较器中的顺序排序
-
add()方法内部会自动调用Comparator接口中compare()方法排序
-
调用的对象是compare方法的第一个参数,集合中的对象是compare方法的第二个参数
* 可以采用匿名内部类的方式。
-
-
c.两种方式的区别
-
TreeSet构造函数什么都不传, 默认按照类中Comparable的顺序(没有就报错ClassCastException)
-
TreeSet如果传入Comparator, 就优先按照Comparator
二叉树:两个叉。小的存储在左边(负数),大的存储在右边(正数),相等就不存在(0)。
compareTo方法,在TreeSet集合中如何存储元素取决于compareTo方法的返回值
返回0,集合中只有一个元素。返回-1,集合会将存储的元素倒序。返回1集合会怎么存就怎么取
注意:
1)、分析排序条件的主次
2)、如果两种排序方式都有,以比较器顺序优先。
3)、如果是存储的已经实现了Comparable接口的元素,而我们又想改变它的排序规则,那么就只能使用比较器了。
-
-
[](
)4.总结
-
(1).List
-
a.普通for循环, 使用get()逐个获取
-
b.调用iterator()方法得到Iterator, 使用hasNext()和next()方法
-
c.增强for循环, 只要可以使用Iterator的类都可以用
- d.Vector集合可以使用Enumeration的hasMoreElements()和nextElement()方法
-
-
(2).Set
-
a.调用iterator()方法得到Iterator, 使用hasNext()和next()方法
- b.增强for循环, 只要可以使用Iterator的类都可以用
-
- (3).普通for循环,迭代器,增强for循环是否可以在遍历的过程中删除
笔者福利
以下是小编自己针对马上即将到来的金九银十准备的一套“面试宝典”,不管是技术还是HR的问题都有针对性的回答。
有了这个,面试踩雷?不存在的!
CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】
回馈粉丝,诚意满满!!!
原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/167632.html