#笔记#圣思园 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类完成对集合的一些辅助功能

里面的方法也都是静态的,直接通过类名调用

0 0
原创粉丝点击