天道酬勤,学无止境

比较器

comparable和comparator区别

相同点:1.comparable和comparator都是用来实现treeset等根据类的自然排序进行排序的集合容器中元素之间的比较,比较算法都是由比较器自己规定不同点:1.comparable是让集合元素自身具备比较性,让元素实现comparable接口,覆盖comparaeTo(T o)方法比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。2.comparator是让集合具备比较性,在集合初始化时就有了比较放松,定义一个类,实现compare(T o1,T o2)方法比较用来排序的两个参数。根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。将此类的对象作为参数传给treeset等根据类的自然排序进行排序的集合容器的构造函数举例子:让人根据年龄排序,如果年龄一样根据姓名的自然顺序排序通过comparable方式 import java.util.Iterator; import java.util.TreeSet; /** * @author WangShuang * */ public class Demo { public static void main(String[] args) { Person p0 = new Person("张三",3); Person p = new Person("张三",1)

2021-06-01 23:35:34    分类:博客    比较器   区别   集合

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: 2

2021-06-01 21:30:01    分类:博客    iterator   迭代器   比较器   基础学习