Comparable<T> 与 Comparator<T>

这两个都能通过Collections.sort或者Arrays.sort对对象进行排序。

Comparable<T>实例

由低到高排序 返回1

由高到低排序 返回-1

public class Point implements Comparable<Point>
{
       public int x;
       public int y;
        @Override
       public int compareTo(Point o) {
        // TODO Auto-generated method stub
        if(this.x>o.x)
           return 1;
       else if( this.x<o.x)
         return -1;
        return 0;
        }
    }
}
Arrays.sort();
Collections.sort();

有时候,我们希望能够分别对Point按x,y进行排序,使用这种方法就不行了,就得使用Comparator<T>接口

    class Point
    {
        public float x;
        public float y;
    }
    class CompareX implements Comparator<Point>
    {

        @Override
        public int compare(Point o1, Point o2) {
            // TODO Auto-generated method stub
            if(o1.x>o2.x)
                return 1;
            else if(o1.x<o2.x)
                return -1;
            else
            {
                if(o1.y>o2.y)
                    return 1;
                else if(o1.y<o2.y)
                    return -1;
                return 0;
            }
        }

    }

    class CompareY implements Comparator<Point>
    {

        @Override
        public int compare(Point o1, Point o2) {
            // TODO Auto-generated method stub
            if(o1.y>o2.y)
                return 1;
            else if(o1.y<o2.y)
                return -1;
            return 0;
        }

    }
java.util.Arrays.sort(points,new CompareY());//对Y排序
java.util.Arrays.sort(points,new CompareX());//对X排序
时间: 2024-10-23 04:09:50

Comparable<T> 与 Comparator<T>的相关文章

Comparable接口与Comparator接口的比较————总结

之前的两篇文章主要学习了Comparable接口和Comparator接口的学习.既然已经学习完了,现在就趁热打铁,进行总结吧! Comparable接口和Comparator接口的共同点: 1. 都是为了进行排序.(废话,当然都是进行排序了!!!嘿嘿,大家都能看出来,不过还是写下来了!) 2. 都是接口.(额..又是废话) 除此之外,小编想不出还有什么共同点了!想到了其他的相同点可以在文章下方留言,大家一起学习! 相同点说完了,接下来就是不同点啦. Comparable接口与Comparato

Java6.0中Comparable接口与Comparator接口详解

Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者都吃饱撑着没事做吗? 再谈Comparator接口之前,大家应该先了解一个叫“策略模式”的东东.一下是百度百科对策略模式的描写: 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化.(原文:The Strategy Pattern

java中的排序Comparable接口和Comparator接口

普通的类要实现排序,必须实现Comparable接口,并重写CompareTo()方法. package test; public class Field implements Comparable<Field> {     private String name;     private int age;     public Field() {     }     public Field(String name, int age) {         this.name = name;

Java—集合框架 Collections.sort()、Comparable接口和Comparator接口

Collentions工具类--java.util.Collections Collentions是Java集合框架中,用来操作集合对象的工具类,也是Java集合框架的成员,与List.Map和Set是并列的. Collections.sort() 排序方法,实现对List对象中的元素进行排序. package com.test.collection; import java.util.ArrayList; import java.util.Collections; import java.ut

类的可比较性Comparable和比较器Comparator

1. Comparable Comparable源码如下: public interface Comparable<T> { public int compareTo(T o); } 类实现该接口意味着该类是可比较的,其方法返回值-1,0,1分别表示当前类比进行比较的类(方法参数)小.相等.大. 实现该接口意味着该类有了'可比较'的属性. 2. Comparator Comparator部分源码如下: @FunctionalInterface public interface Comparat

Comparable接口和Comparator接口

这两个接口经常容易混淆,不用的时候不清楚,用的时候就很容易出错,现摘抄网络上的一篇清楚的文章在此,便于日后查阅. 在实际应用中,我们往往有需要比较两个自定义对象大小的地方.而这些自定义对象的比较,就不像简单的整型数据那么简单,它们往往包含有许多的属性,我们一般都是根据这些属性对自定义对象进行比较的.所以Java中要比较对象的大小或者要对对象的集合进行排序,需要通过比较这些对象的某些属性的大小来确定它们之间的大小关系. 一般,Java中通过接口实现两个对象的比较,比较常用就是Comparable接

Java之Comparable接口和Comparator接口

Comparable & Comparator 都是用来实现集合中元素的比较.排序的: Comparable 是在集合内部定义的方法实现的排序: Comparator 是在集合外部实现的排序: 所以,如想实现排序,就需要在集合外定义 Comparator 接口的方法或在集合内实现 Comparable 接口的方法. Comparator位于包java.util下,而Comparable位于包java.lang下 Comparable 是一个对象本身就已经支持自比较所需要实现的接口(如 Strin

Comparable接口和Comparator接口的不同用法

两者都可用来在定义比较方法,然后用在排序中. Comparable是类本身继承的接口 Comparator实在类外定义一个排序的类 比较而言,觉得Comparator更灵活一些,但是Comparable方便一些. 举个栗子: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Main { public static void main(String

comparable接口 和 comparator接口的特点与区别

1. Comparator 和 Comparable 相同的地方 他们都是java的一个接口, 并且是用来对自定义的class比较大小的. 什么是自定义class: 如 public class Person{ String name; int age }. 当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collections.sort( personList), 是得不到预期的结果的. 这时肯定有人要问, 那为什么可以排