• 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() ).



     

  • 相关阅读:
    元素显示v-show
    条件渲染v-if
    v-bind:class
    Class绑定v-bind:class
    设定计算属性setter
    观察属性$watch
    计算属性computed
    过滤器filters
    jk_proxy实现apache+tomcat负载均衡
    (WPF)Storyboard
  • 原文地址:https://www.cnblogs.com/Pjson/p/8576319.html
Copyright © 2020-2023  润新知