java比较器Comparator 使用

PresonDemo

package cn.stat.p5.person.demo;

public class PresonDemo implements Comparable  {

    private String name;
    private int age;

    /**
     * @param args
     */

    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 void outPrint()
    {

        System.out.println(this.age+".."+this.name);
    }
    public PresonDemo(String name, int age) {

        this.name = name;
        this.age = age;
    }
    //TreeSet();为空时,实列类内部比较器
    @Override
    public int compareTo(Object o) {
        // TODO Auto-generated method stub
        PresonDemo p=(PresonDemo)o;
        if(p.age<this.age)
            return 1;
        if(p.age>this.age)
            return-1;
        return 0;
    }

}

比较器CompartorbyName

/**
 * 根据名子比较返回顺序
 */
package cn.stat.p6.arraylist.demo;

import java.util.Comparator;

import cn.stat.p5.person.demo.PresonDemo;

/**
 * @author Administrator
 *
 */
public class CompartorbyName implements Comparator {

    /* (non-Javadoc)
     * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
     */
    @Override
    public int compare(Object o1, Object o2) {
        // TODO Auto-generated method stub
        PresonDemo p1=(PresonDemo)o1;
        PresonDemo p2=(PresonDemo)o2;
        int temp=p1.getName().compareTo(p2.getName());
        return temp==0?p1.getAge()-p2.getAge():temp;
    }

}

TreeSetDemo

package cn.stat.p6.arraylist.demo;
import cn.stat.p5.person.demo.PresonDemo;
import java.util.Iterator;
import java.util.TreeSet;
import java.util.ArrayList;

public class TreeSetDemo {

    public static void main(String[] args) {
        TreeSet ts=new TreeSet(new CompartorbyName()); //比较器   

        ts.add(new PresonDemo("list1",2));
        ts.add(new PresonDemo("list9",2));
        ts.add(new PresonDemo("list7",2));
        ts.add(new PresonDemo("list4",2));
        ts.add(new PresonDemo("list5",2));
        Iterator<PresonDemo> it=ts.iterator();
        while(it.hasNext())
        {
            PresonDemo p=(PresonDemo)it.next();
            System.out.println(p.getName()+"  "+p.getAge());

        }
    }
}
时间: 2024-11-05 11:46:23

java比较器Comparator 使用的相关文章

编写比较器 comparator

/* 让SortedSet集合做到排序还有另一种方式:java.util.Comparator;  单独编写一个比较器. */ import java.util.*; public class SortedSetTest03{ public static void main(String[] args){ //创建TreeSet集合的时候提供一个比较器. //SortedSet products = new TreeSet(new ProductComparator()); //匿名内部类:不推

Java的Comparator和Comparable对比

1.对象如何对比排序? Java的基本类型如int, float, double都可以直接使用java.util.Arrays.sort(Object[])对比排序,那对象是如何比较排序的呢?我们定义的类都是继承Object类的,Object类的equals的方法,默认是比较两个对象是否相等(hashcode相同) public boolean equals(Object obj) { return (this == obj); } 而我们现实要求一般不是这样比较,可以通过实现Comparabl

java lang(Comparable接口) 和java util(Comparator接口)分析比较

//Comparable 接口强行对实现它的每个类的对象进行整体排序. -- 自然排序.类的compareTo称为自然比较方法. public interface Comparable<T> { public int compareTo(T o); } 此接口强行对实现它的每个类的对象进行整体排序.这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法. 实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序

java比较器Comparable接口和Comaprator接口

java的比较器有两类,分别是Comparable接口和Comparator接口. 在为对象数组进行排序时,比较器的作用非常明显,首先来讲解Comparable接口. 让需要进行排序的对象实现Comparable接口,重写其中的compareTo(T o)方法,在其中定义排序规则,那么就可以直接调用java.util.Arrays.sort()来排序对象数组,实例如下: class Student implements Comparable<Student>{ private String n

java比较器 之compareable 和comparato比较

compareable 测试类import java.util.Set; import java.util.TreeSet; public class Test { public static void main(String[] args) { Set<Person>allset = new TreeSet<Person>(); allset.add(new Person(22,"hjw",20000.0,"论语",50.0)); alls

Java 模拟 Comparator接口 策略模式

续上一篇  <Java 模拟 Comparable接口> 一.Teacher类及Student类的比较大小方式是不固定的,比如老师除了比较职称外,还可比较工龄大小,年龄大小等.则定义Comparator接口,不同比较方法去定义为一个xxComparator类,去实现Comparator接口,Teacher类及Student类引用具体的xxComparator比较器,则可实现灵活的比较方式切换.此则为策略模式的一个例子:当我要比较大小的时候,先定义一个比较器Comparator,但具体的比较由具

java比较器Comparable接口和Comaprator接口的比较

Comparable接口:让自定义的对象具有比较规则 import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; /* * Comparable接口:让自定义的对象具有比较规则 * * */ public class ComparableDemo { public static void main(String[] args) { ArrayList<Student> list =

Java 比较器的用法

第一次写博客,正好在回顾Java的时候用到了比较器,记录一下使用的方法. Java比较器多用于对象数组的排序,主要用到comparable和comparator接口 1.使用comparable接口 首先将需要实现排序对象的类实现comparable接口,实现后覆写comparaTo(T other)方法,在comparaTo方法中写出比较规则,最后调用java.utils.Arrays.sort()方法传入需要比较的对象数组即可排序. 测试如下: 1 import java.util.Arra

Java:Comparator接口

public interface Comparator<T> 接口里面的方法 int compare(T o1, T o2) o1 > o2 返回 1 o1 = o2 返回 0 o1 < o2 返回 -1 boolean equals(Object obj) 判断是否相等 其他方法:https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html 强行对某个对象 collection 进行整体排序 的比较函数.可