您当前的位置: 首页 >  Java

liaowenxiong

暂无认证

  • 2浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java对象如何实现比较规则

liaowenxiong 发布时间:2021-12-23 11:24:22 ,浏览量:2

文章目录
  • 一、Comparable
  • 二、Comparator
    • 示例代码

一、Comparable

public interface Comparable

此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。

实现此接口的对象列表(和数组)可以通过 Collections.sort(和 Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指定比较器。

二、Comparator

public interface Comparator

强行对某个对象 collection 进行整体排序 的比较函数。可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort),从而允许在排序顺序上实现精确控制。还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的顺序,或者为那些没有自然顺序的对象 collection 提供排序。

当且仅当对于一组元素 S 中的每个 e1 和 e2 而言,c.compare(e1, e2)==0 与 e1.equals(e2) 具有相等的布尔值时,Comparator c 强行对 S 进行的排序才叫做与 equals 一致 的排序。

示例代码
package priv.lwx.javaprac.functionalinterface;

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

/**
 * @ClassName Demo03FunctionalInterface
 * @Description TODO
 * @Author liaowenxiong
 * @Version 1.0
 * @date 2021/9/7 下午3:26
 */
public class Demo03FunctionalInterface {

    public static void main(String[] args) {
        // 获取比较器对象
        Comparator c = getStringComparator();
        String[] strs = new String[]{"ddff", "de", "ert"};
        // 根据传入的比较器对数组进行排序
        Arrays.sort(strs, c);
        // 把排序号的字符串数组打印输出
        System.out.println(Arrays.toString(strs));

    }

    public static Comparator getStringComparator() {
        // 使用匿名内部类来实现
        return new Comparator() {
            @Override
            public int compare(String o1, String o2) {
                // 如果返回0表示相等
                // 后面减去前面的,表示降序;前面减去后面的表示升序
                return o2.length() - o1.length();
            }
        };
    }
}

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0389s