comparator比较器的使用。

package Comparator; public class Student { /*** * 1 今天方法在内存中只有一个,也就是说,当你new出一个对象的时候,给这个静态 * * * */ public int age; public String name; public Student(int age,String name) { this.age=age; this.name=name; } public String toString() { return age+"-----"+name; } public static int getAge() { return age; } public static void setAge(int age) { Student.age = age; } public static String getName() { return name; } public static void setName(String name) { Student.name = name; } }
package Comparator; /***  * *  *  *1  comparator 和comparable的区别  *  *   comparable是让需要排序的类实现接口,  *   comparator是创建一个类,,让这个类实comparator这个接口。  *  *2  应用  *                      *1) 在容器中传入一个参数对象,这个对象就是我们实现了compartor接口的类的对象。  *然后这个容器就会按照我们在类里面定义的规则来排序。                        *3 关于comparable()方法发中object类型参数的理解。  *  *   1)在实例化一个对象的时候,会给一个类的全局变量赋值,  *   2)调用方法的时候会给方法传入需要排序的参数,  *   3)这些传进来的参数是object类型的  *   4)具体使用的时候会把这些参数进行类型的转换。  */

import java.util.Comparator; import java.util.Set; import java.util.TreeSet;
public class Sort1 implements Comparator {
 @Override  public int compare(Object a, Object b) {  
 /**      1获取name属性的第一个字母存下来   2然后在获取一个name的第一个字母存下来   3然后比较这两个字母       1) 因为String类型的已经实现了comparable接口了,所以,直接调用comparato方法就可以了。       2)int类型的可以调用comparato方法得到返回值作为方法的返回值.也可以自定义方法的内容,得到现返回值。      **/     
 //String x=((Student)a).getName().substring(0,1);//两种写法   String x=a.getClass().getName().substring(0, 1);      String y=((Student)b).getName().substring(0,1);   //String y=b.getClass().getName().substring(0, 1);   return x.compareTo(y);  }           public static void main(String[] args) {           Set<Student> set=new TreeSet<Student>(new Sort1());           set.add(new Student(1,"aaa"));           System.out.println(set);                    set.add(new Student(2,"ccc"));           System.out.println(set);           set.add(new Student(3,"ddd"));           System.out.println(set);           set.add(new Student(5,"bbb"));           System.out.println(set);           set.add(new Student(4,"aaa"));                     System.out.println(set);                   } }

展开阅读全文

没有更多推荐了,返回首页