首页 > 其他 > 详细

Comparable<T> 和 Comparato<T>

时间:2016-07-15 12:50:02      阅读:921      评论:0      收藏:0      [点我收藏+]

相同点:

  Comparable<T> 和 Comparator<T>都是接口

不同点:

  两者声明的方法不同。前者是compareTo()方法,后者是compare()方法。

 

    Comparable<T>此接口是由具体某个有实际意义的类来实现,指示出此类的对象有什么样的排序方法。下面的苹果

public class Apple implements Comparable<Apple> {
    /**
     * 苹果的重量
     */
    private int  weight;

    /**
     * 自然排序即从小到大
     * 返回1的,代表此对象比参数对象大,排在后面,这样就可以控制降序或升序排列
     */
    @Override
    public int compareTo(Apple apple) {
        if (this.weight > apple.getWeight())
        {
            return -1;
        }
        else if (this.weight < apple.getWeight())
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}

上面的例子中,苹果重量轻的将排在后面,所以是降序排列。

 

    Comparator<T>此接口一般用来的定义比较器,不会由包含实际意义的类来实现,而是由具体比较器来实现。下面定义一个比较器:

public class WeightComparator implements Comparator<Apple> {
    /**
     * 苹果的重量
     */
    private int  weight;

    /**
     * 自然排序即从小到大
     * 返回1的,代表此对象比参数对象大,排在前面,这样就可以控制降序或升序排列
     */
    @Override
    public int compare(Apple a, Apple b) {
        if (a.getWeight() > b.getWeight())
        {
            return 1;
        }
        else if (a.getWeight() < b.getWeight())
        {
            return -1;
        }
        else
        {
            return 0;
        }
    }
    
    public static void main(String[] args)
    {
        Apple a = new Apple();
        Apple b = new Apple();
        Apple c = new Apple();
        a.setWeight(50);
        b.setWeight(150);
        c.setWeight(100);
        
        Apple[] apples = {a,b, c};
        Arrays.sort(apples, new WeightComparator());
        //50 100 150
        System.out.println("" + apples[0] + apples[1] + apples[2]);  
    }
}

上面的例子定义了一个重量比较器,我把它用来比较苹果的重量,即使用泛型

public class WeightComparator implements Comparator<Apple>

Comparable<T> 和 Comparato<T>

原文:http://www.cnblogs.com/ahudyan-forever/p/5673010.html

(0)
(3)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!