zoukankan      html  css  js  c++  java
  • Comparator

    1、java.util.Comparator了接口

      一个实现了comparator接口的对象能够对比不同的对象。它不能用于同一个类的不同实例的对比,但是可以用于其他的类的实例做对比。必须实现java.util.Comparator接口。

    • java.util.Collections.sort(List, Comparator)
    • java.util.Arrays.sort(Object[], Comparator);
    1 package java.util;
    2 
    3 public interface Comparator<T> {
    4 
    5     int compare(T o1, T o2);
    6 
    7     boolean equals(Object obj);
    8 }

    2、实现方法

    1 public class EmpSortByName implements Comparator<Employee>{
    2 
    3     public int compare(Employee o1, Employee o2) {//重写compara方法
    4 
    5       return o1.getName().compareTo(o2.getName());//String类实现comparable接口并重写comparaTo方法
    6 
    7     }
    8 
    9   }

    3、特别注意

    • Comparable 是排序接口。也就是说,实现Comparable接口的类的对象的List列表(或数组)可以通过实现Comparable接口,调用sort()方法来实现排序
    • Comparator 是比较器接口。若需要控制某个次序,而该类本身不支持排序(即没有实现Comparable接口);那么,我们可以建立一个“该类的比较器”来进行排序。这个“比较器”只需要实现Comparator接口即可。

    in other words:Comparable相当于“内部比较器”,而Comparator相当于“外部比较器”。

    • 当name相等的时候,接下来对比age,如果相等继续尝试id

    4、实例测试

     1 public void listSort(){ //对list降序排序
     2         List<Integer> list = new ArrayList<Integer>();
     3         list.add(1);
     4         list.add(55);
     5         list.add(9);
     6         list.add(0);
     7         Collections.sort(list, new Comparator<Integer>() {
     8              public int compare(Integer o1, Integer o2) {
     9                   return o2 - o1;
    10             }
    11         });//使用Collections的sort方法,并且重写compare方法
    12 }

    参考博客:http://www.cnblogs.com/skywang12345/p/3324788.html

  • 相关阅读:
    Tiling_easy version
    Children’s Queue
    hdu 彼岸
    最小公倍数和最大公约数问题
    hdu 神、上帝以及老天爷
    统计问题
    不容易系列之(3)—— LELE的RPG难题
    hdu 折线分割平面
    hdu Counting Triangles
    Queuing
  • 原文地址:https://www.cnblogs.com/MazeHong/p/6247792.html
Copyright © 2011-2022 走看看