java 迭代器排序_Java核心API -- 7(Iterator迭代器、Comparable、Comparator比较器)

1. Iterator迭代器

所有Collection的实现类都实现了iterator方法,该方法返回一个Iterator接口类型的对象,用于实现对集合元素迭代的便利。在java.util包下。

1)Iterator定义有三个方法:

①boolean hasNext()方法:判断指针后面是否有元素。

②E next()方法:指针后移,并返回当前元素。E代表泛型,默认为Object类型。

③void remove()方法:在原集合中删除刚刚返回的元素。

2)对于List集合而言,可以通过基于下标的get方法进行遍历;而iterator方法是针对Collection接口设计的,所以,所有实现了Collection接口的类,都可以使用Iterator实现迭代遍历。

3)迭代器的使用方式:先问后拿。问:boolean hasNext()该方法询问迭代器当前集合是否还有元素;拿:E next()该方法会获取当前元素。迭代器的迭代方法是while循环量身定制的。

4)迭代器中的删除问题:在迭代器迭代的过程中,我们不能通过“集合”的增删等操作,来改变该集合的元素数量!否则会引发迭代异常!若想删除迭代出来的元素,只能通过Iterator。迭代器在使用自己的remove()方法时,可以将刚刚获取的元素从集合中删除,但是不能重复调用两次!即在不迭代的情况下,不能在一个位置删两次。

案例9:

9389af78dc1b41564a9b3e72d22fc4fd.png

2.Comparable和Comparator接口

(1) Comparable接口:Comparable接口用于表示对象间的大小关系,我们需要实现Comparable接口,并重写compareTo()方法定义比较规则。

(2) Collections.sort()方法:需要集合中的对象实现Comparable接口,从而可以调用其compareTo方法判断对象的大小,否则sort将无法判断。该方法会依次调用集合中每个元素的compareTo方法,并进行自然排序。

案例10:

f538b6360e04792dc340a50c6a411720.png

822452bc850ddc6931dd863670971a4a.png

3366c5a2ac6361ac9012d1e40866ca5b.png

(3) Comparator接口:比较器。一旦Java类实现了Comparable,其比较逻辑就已经确定了,如果希望在排序中的操作按照“临时指定规则”,即自定义比较规则。可以采用Comparator接口回调方式。使用匿名类方式创建一个实例来定义比较器的方式很常见。

Comparator比较器创建步骤:

①定义一个类并实现Comparator接口。

②实现接口中的抽象方法compare(E o1,E o2)。

③实例化这个比较器

④调用Collections的重载方法:sort(Collection c,Comparator comparator)进行排序。

案例11:

80eb6a6e5768f2d62a3f1c2e3c2a89eb.png

3. Collection和Collentions的区别

Collection是java.util下的接口,它是各种集合的父接口,继承于它的接口主要有Set 和List;

Collections是个java.util下的类,是针对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值