比较器

什么是迭代器???
提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。

迭代器Iteartor接口中,有以下3个方法:
1.hasNext() 该方法判断集合对象是否还有下一个元素,如果已经是最后一个元素则返回false
2.next() 把迭代器的指向移到下一个位置,同时,该方法返回下一个元素的引用
3.remove()  从迭代器指向的Collection中移除迭代器返回的最后一个元素

conparable和compator
.Comparable接口的使用
 
此接口强行对实现它的类的每个对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。
下面看一个实例如何使用comparable接口实现对象排序:设计一个学生类,此类包含姓名、年龄、成绩,产生一个对象数组,要求按成绩由高到低排序,如果成绩相等,则按照年龄由低到高排序。
步骤:

1.创建学生类实现Comparable接口覆写compareTo()方法

2.调用java.util.Arrays.sort()方法排序

class Person implements Comparable{
	private String name;
	private int age;
	private double score;
	
	public Person(String name, int age, double score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}
	
	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", score=" + score
				+ "]";
	}
 
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public double getScore() {
		return score;
	}
	public void setScore(double score) {
		this.score = score;
	}
 
	@Override
	public int compareTo(Person o) {
		// TODO Auto-generated method stub
		return age-o.age;
	}
}

Comparator接口的使用

如果一个类已经开发完成,但是此类建立的初期并没有实现Comparable接口,此时肯定是无法进行对象排序操作的。所以Java在java.util包中定义了Comparator接口

 
创建StudentComparator类实现Comprator接口覆写compare()方法定义比较规则
调用java.util.Arrays.sort()方法
package study;

import java.util.Arrays;
import java.util.Comparator;

/**  
* 描述:TODO
*  
* @author ASUS  
* @date 2018年8月4日
*/
public class ComparatorDemo {


	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student1 [] array = new Student1[3];
        array [0] = new Student1("caocao",58,89.7);
        array [1] = new Student1("liubei",48,69.7);
        array [2] = new Student1("sunquan",28,79.7);
        Arrays.sort(array, new Comparator(){
			//传入的时候由用户自己选
			@Override
			public int compare(Student1 o1, Student1 o2) {
				// TODO Auto-generated method stub
				int age1 = o1.getAge();
				int age2 = o2.getAge();
				return age1 > age2 ? age1:(age1==age2) ? 0:-1;
				
			}
		});

        System.out.println(Arrays.toString(array));
	}

}
class Student1 {
	private String name;
	private int age;
	private double score;
	/**
	 * @param name
	 * @param age
	 * @param score
	 */
	public Student1(String name, int age, double score) {
		super();
		this.name = name;
		this.age = age;
		this.score = score;
	}
	
	@Override
	public String toString() {
		return "Student1 [name=" + name + ", age=" + age + ", score=" + score + "]";
	}

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public double getScore() {
		return score;
	}
	public void setScore(double score) {
		this.score = score;
	}
	
}

 

你可能感兴趣的:(继承,接口,抽象类,多态,反射,加载)