Java中Comparable和Comparator实现对象比较

1.通过Comparable实现排序

package Comparable;

import java.util.Arrays;

public class ComparableUser implements Comparable<ComparableUser>
{

    private String id;
    private int age;

    public ComparableUser(String id, int age) {
        this.id = id;
        this.age = age;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public int compareTo(ComparableUser o) {
         return this.age - o.getAge();
         //return ((ComparableUser) o).getAge() - this.age;
    }

    /**
     * 测试方法
     */
    public static void main(String[] args) {
        ComparableUser[] users = new ComparableUser[] {
                new ComparableUser("u1001", 25),
                new ComparableUser("u1002", 20),
                new ComparableUser("u1003", 21) };
        Arrays.sort(users);// 对对象进行排序
        for (int i = 0; i < users.length; i++) {
            ComparableUser user = users[i];
            System.out.println(user.getId() + " " + user.getAge());
        }
    }

}

2.通过实现Comparator进行排序

package Comparable;

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

class User {  

    private String id;
    private int age;  

    public User(String id, int age) {
        this.id = id;
        this.age = age;
    }  

    public int getAge() {
        return age;
    }  

    public void setAge(int age) {
        this.age = age;
    }  

    public String getId() {
        return id;
    }  

    public void setId(String id) {
        this.id = id;
    }
}

public class UserComparator implements Comparator {  

    public int compare(Object arg0, Object arg1) {
        return ((User) arg0).getAge() - ((User) arg1).getAge();
    }  

    /**
     * 测试方法
     */
    public static void main(String[] args) {
        User[] users = new User[] { new User("u1001", 25),
                new User("u1002", 20), new User("u1003", 21) };
        Arrays.sort(users, new UserComparator());
        for (int i = 0; i < users.length; i++) {
            User user = users[i];
            System.out.println(user.getId() + " " + user.getAge());
        }
    }

}  

Java中Comparable和Comparator实现对象比较,布布扣,bubuko.com

时间: 2024-10-14 20:23:34

Java中Comparable和Comparator实现对象比较的相关文章

java中Comparable 和Comparator

java中Comparable 和Comparator -Comparable接口 接口定义 public interface Comparable<T> { public int compareTo(T o); } 该接口中仅仅包含了一个compareTO()函数, int compareTo(Object o): 比较当前实例对象与对象o,如果位于对象o之前,返回负值,如果两个对象在排序中位置相同,则返回0,如果位于对象o后面,则返回正值. 实例: x.compareTo(y) 来&quo

Java中Comparable和Comparator接口区别分析

Java中Comparable和Comparator接口区别分析 来源:码农网 | 时间:2015-03-16 10:25:20 | 阅读数:8902 [导读] 本文要来详细分析一下Java中Comparable和Comparator接口的区别,两者都有比较的功能,那么究竟有什么区别呢,感兴趣的Java开发者继续看下去吧.Comparable 简介Comparable 是排序接口.若一个类实现了Comparab 本文要来详细分析一下Java中Comparable和Comparator接口的区别,

Java 中 Comparable 和 Comparator 比较(转)

转自http://www.cnblogs.com/skywang12345/p/3324788.html 本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着“该类支持排序”.  即然实现Comparable接口的类支持排序,假设现在存在“实现Comparable接口的类的对象的List列表(或数组)”,则该Li

Java中Comparable和Comparator区别小结

一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序. 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器.该接口定义如下: package java.lang; import java.util.*; public interface Comparable<T> {

Java中Comparable与Comparator的区别

相同 Comparable和Comparator都是用来实现对象的比较.排序 要想对象比较.排序,都需要实现Comparable或Comparator接口 Comparable和Comparator都是Java的接口 区别 Comparator位于java.util包下,而Comparable位于java.lang包下 Comparable接口的实现是在类的内部(如 String.Integer已经实现了Comparable接口,自己就可以完成比较大小操作),Comparator接口的实现是在类

Java 中 Comparable 和 Comparator 比较

本文,先介绍Comparable 和Comparator两个接口,以及它们的差异:接着,通过示例,对它们的使用方法进行说明. Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着"该类支持排序".  即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(或数组)",则该List列表(或数组)可以通过 Collections.sort(或 Array

Java中Comparable和Comparator的辨析

在对集合元素进行比较时一般使用TreeSet.对于简单的数据类型,TreeSet可以直接进行比较.但是对于复杂的数据类型,比如自己定义的数据类型或者类,就需要自己设置比较方法与比较规则了,这时就需要用到Comparable和Comparator了. 1.Comparable和Comparator都是用来实现集合中的元素的比较.排序的.但也有所区别: (1)Comparable是在集合内部定义的方法实现排序的,位于java.util下.而Comparator是在集合外部实现的排序位于java.la

【转载】Java中Comparable和Comparator比较

[本文转自]http://www.cnblogs.com/skywang12345/p/3324788.html Comparable 简介 Comparable 是排序接口. 若一个类实现了Comparable接口,就意味着"该类支持排序".  即然实现Comparable接口的类支持排序,假设现在存在"实现Comparable接口的类的对象的List列表(或数组)",则该List列表(或数组)可以通过 Collections.sort(或 Arrays.sort

Java中Comparable和Comparator区别

一.Comparable简介 Comparable是排序接口.若一个类实现了Comparable接口,就意味着该类支持排序.实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或Arrays.sort进行自动排序. 此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指定比较器.该接口定义如下: package java.lang; import java.util.*; public interface Comparable<T> {