#笔记#圣思园 JavaSE 第46讲——迭代器、TreeSet、Comparator
来源:互联网 发布:淘宝运费模板如何删除 编辑:程序博客网 时间:2024/06/06 10:07
1.HashSet中的 iterator() 方法——用于取出集合中的元素
public Iterator<E> iterator()--------------------------返回Iterator类型的对象、返回针对集合中元素的迭代器、返回的元素没有特定顺序
帮助文档中,返回的Iterator对象是接口类型。但是不可能返回接口类型,实际上是返回的是实现接口的类的实例,但这个类我们不知道,我们只知道返回的是Iterator类型的,具体是哪个子类我们不清楚。
Iterator接口:返回针对于集合的迭代器。具有三个方法:
(1) boolean hasNext()
如果这个迭代器后面有更多的元素,就返回true
(2) E next()
返回迭代中的下一个元素
(3) void remove()
使用iterator方法产生迭代器对象,然后使用迭代器的方法
2.SortedSet接口(有排序的集合)继承了Set,SortedSet的主要实现类是TreeSet
TreeSet的两种排序方式:自然排序、Comparator排序
自然排序方式虽然简单,但是并不实用
如果要按照学生分数高低排序,此时自然排序就无能为力了
只add一个元素的时候正常,再添加元素就异常了。通过阅读文档中TreeSet的add方法:如果指定对象不能和当前对象进行比较,那么就会抛出异常
由于我们没有告诉程序按照分数去进行比较,所以程序不知道该怎么比
上面程序使用TreeSet的无参数构造方法。我们应该使用另外的构造方法——TreeSet(Comparator<? super E> comparator),根据指定的comparator排序!
int compare (T o1 , T o2)——compare方法,返回负、零、正
3.要使用自定义的排序方法 Comparator
使用TreeSet的带Comparator的构造方法:TreeSet(Comparator<? super E> comparator)--------------传进去comparator接口类型的实例
compare(new Integer(1),new Integer(2))----------------------返回负数
自己定义一个类,实现Comparator接口
然后使用Comparator里面的compare方法,自定义的排序方法就是这样体现出来的
MyComparator类中的compare方法,如果返回-1,代表o1比o2小,对于字符串来说就是s1在s2前面。
希望按照反序排序字符串,查看String类中的方法,compareTo方法,如果a.compareTo(b)返回负数,那么a在b之前。如果返回正数,那么a在b后面
4.按学生分数升序排序
如果p1.score小于p2.score,那么返回的就是负数,实现了分数的升序
5.针对于数组,存在Arrays类完成对数组的一些辅助功能;
里面的方法都是静态的,
对于集合,存在Collections类完成对集合的一些辅助功能
里面的方法也都是静态的,直接通过类名调用
- #笔记#圣思园 JavaSE 第46讲——迭代器、TreeSet、Comparator
- JavaSE第四十六讲:迭代器、TreeSet及Comparator深度剖析
- #笔记#圣思园 JavaSE 第4讲——运算符
- #笔记#圣思园 JavaSE 第17讲——继承剖析
- #笔记#圣思园 JavaSE 第44讲——栈、队列
- #笔记#圣思园 JavaSE 第48讲——Map映射
- #笔记#圣思园 JavaSE 第72讲——JUnit框架
- #笔记#圣思园 JavaSE 第5讲——运算符 续
- #笔记#圣思园 JavaSE 第6讲——流程控制语句
- #笔记#圣思园 JavaSE 第8讲——理解面向对象程序设计
- #笔记#圣思园 JavaSE 第9讲——面向对象之 封装 encapsulation
- #笔记#圣思园 JavaSE 第10讲——面向对象之 封装 encapsulation 续
- #笔记#圣思园 JavaSE 第11讲——面向对象之 封装 encapsulation 续二
- #笔记#圣思园 JavaSE 第12讲——Java基础知识回顾
- #笔记#圣思园 JavaSE 第14讲——面向对象详解
- #笔记#圣思园 JavaSE 第15讲——方法参数传递详解
- #笔记#圣思园 JavaSE 第16讲——方法重载剖析(overload)
- #笔记#圣思园 JavaSE 第18讲——多态剖析
- 自动toString
- MySQL数据库启用远程连接
- jqgrid列表自动换行
- RandomAccess接口
- 虚拟文件系统 (VFS)-基于linux3.10
- #笔记#圣思园 JavaSE 第46讲——迭代器、TreeSet、Comparator
- ABAP内外日期转换
- Longest Valid Parentheses
- Java WorkSet View
- 理解RESTful架构
- php字符串函数(3)
- iOS集合视图UICollectionViewCell的选种(高亮)效果
- R语言安装
- 字典序最小问题——Best Cow Line