java迭代器和比较器

Iterable和Iterator

两者都是与迭代器有关的接口,但是这两者具体有何区别和联系呢?

public interface Iterable{
    Iterator iterator();
}
public interface Iterator{
    boolean hasNext();
    E next();
}

实际上,Iterable向外宣称了可迭代的特性,也就是通过其iterator()方法可以实现迭代。而iterator()方法返回一个Iterator类型的实现,也就是Iterator负责具体迭代器的实现,因此它需要实现hashNext(),next()两个方法,这就需要内部包含游标等变量记录迭代状态信息。
因此这两者的区别就是:Iterable不具备迭代的状态信息,而Iterator则记录迭代信息。

Camparable和Camparator接口

看起来两者都是和比较相关的接口,两者的区别是什么呢?
Camparable接口是对类型可以比较大小特性的宣称,通过实现Camparable接口,实现campareTo方法,可以支持该类对象之间的排序。
Camparator用于实现独立于类型之外的一个比较器,需要实现campare方法,可以选择实现equals()方法。相当于是外部的比较工具。

也就是说,Camparable相当于描述了类型自身支持比较大小的特性,而Camparator是一个外部比较器。

你可能感兴趣的:(java程序语言)