zoukankan      html  css  js  c++  java
  • Java集合排序方法comparable和comparator的总结

    一、概述
    Comparable和Comparator都是用来实现集合中元素的比较、排序的。
    Comparable是在集合内部定义的方法实现的排序,位于java.lang下
    Comparator是在集合外部实现的排序,位于java.util下

    首先来看一下Comparable的定义:

     package java.lang;
    import java.util.*;
    public interface Comparable<T> {
      //若x.compareTo(y) <0,则x<y;若x.compareTo(y) =0,则x=y;若x.compareTo(y) >0,则x=y; public int compareTo(T o); }

      Comparator的定义如下:

    package java.util;
    public interface Comparator<T> {
    //如果要按照升序排序,
    则o1 小于o2,返回-1(负数),相等返回0,01大于02返回1(正数)
    如果要按照降序排序
    则o1 小于o2,返回1(正数),相等返回0,01大于02返回-1(负数) int compare(T o1, T o2); boolean equals(Object obj); }

    2. Comparator 和 Comparable 的区别
    Comparable 定义在 Person类的内部:
    public class Persion implements Comparable {..比较Person的大小..},
    因为已经实现了比较器,那么我们的Person现在是一个可以比较大小的对象了,
    它的比较功能和String完全一样,可以随时随地的拿来 比较大小,因为Person现在自身就是有大小之分的。
    Collections.sort(personList)可以得到正确的结果。

    Comparator 是定义在Person的外部的:
    此时我们的Person类的结构不需要有任何变化,如
    public class Person{ String name; int age },
    然后我们另外定义一个比较器:
    public PersonComparator implements Comparator() {..比较Person的大小..},
    在PersonComparator里面实现了怎么比较两个Person的大小.
    所以,用这种方法,当我们要对一个 personList进行排序的时候,
    我们除了了要传递personList过去, 还需要把PersonComparator传递过去,
    因为怎么比较Person的大小是在PersonComparator 里面实现的,
    如: Collections.sort( personList , new PersonComparator() ).



     

  • 相关阅读:
    Windows性能调优: Perfomn.exe 和Perfmon /res
    WPF:逻辑树和视觉树
    AD FS 概述
    SQL Server : TRUSTWORTHY 数据库属性
    WCF:在开发期间应该注意的问题
    ASP.NET MVC 2中的数据验证
    SQL Server:如何在Service Broker发送消息验证失败后获取源消息
    GDI+:自定义控件时如何使用Region来输出特定区域
    LINQ to XML:如何替换XCData的内容
    javascript是否真的就不能实现跨站请求呢?
  • 原文地址:https://www.cnblogs.com/Pjson/p/8576319.html
Copyright © 2011-2022 走看看