Java对象如何实现比较规则

文章目录

  • 一、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<String> c = getStringComparator();String[] strs = new String[]{"ddff", "de", "ert"};// 根据传入的比较器对数组进行排序Arrays.sort(strs, c);// 把排序号的字符串数组打印输出System.out.println(Arrays.toString(strs));}public static Comparator<String> getStringComparator() {// 使用匿名内部类来实现return new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {// 如果返回0表示相等// 后面减去前面的,表示降序;前面减去后面的表示升序return o2.length() - o1.length();}};}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/332694.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python教材目录,python 目录

python在安装的时候&#xff0c;就自带了很多模块&#xff0c;我们把这些模块称之为标准库&#xff0c;其中&#xff0c;有一个是使用频率比较高的&#xff0c;就是 os 。这个库中方法和属性众多&#xff0c;有兴趣的看官可以参考官方文档&#xff1a;https://docs.python.org/…

quartus状态机生成_生成器作为(快速失败)状态机

quartus状态机生成这个想法是几周前在设计“生成器”类时想到的&#xff0c;该类必须将输入发送给封装的Writer 。 实际上&#xff0c;它是Builder模式。 但是&#xff0c;规则有些复杂&#xff0c;用户必须以某种方式调用add...()方法&#xff0c;才能正确生成输出。 不用说&…

除法算式的正确表述

12 4 3&#xff0c;这个关系表达式叫作除法算式&#xff0c;表述为 12 除以 4 等于 3&#xff1b;也可以表述为 4 除 12 等于 3。

elk 日志管理_具有ELK的APIGEE API网关日志管理(弹性搜索,Logstash和Kibana)

elk 日志管理在本文中&#xff0c;我们将看到如何使用 Elastic Search &#xff0c; Logstash 和 Kibana 管理APIGEE API网关生成的日志 。 下图突出显示了日志数据如何流经ELK堆栈以进行数据可视化和监视。 作为API网关的一部分&#xff0c;我们将使用MessageLogging策略在代…

php输出分组,ThinkPHP 项目分组中的模板输出

模板输出启用了项目分组后&#xff0c;模板输出路径同原来相比有一些差别。默认输出当使用 $this->display() 指令输出默认模板时&#xff0c;输出的模板路径加上了分组名&#xff1a;TPL/模板默认主题/分组名/模块名/操作名模板后缀// 例子&#xff1a;Tpl/default/Admin/U…

平方根/立方根/根式

文章目录平方根/二次方根/二次根立方根/三次方根/三次根平方根/二次方根/二次根 如果一个正数 x 的平方等于 a&#xff0c;即 x2x^2x2 a&#xff0c;那么这个正数 x 就叫 做 a 的算术平方根&#xff08;算术二次方根&#xff09;&#xff0c;记作 a\sqrt{a}a​ &#xff0c;读…

使用junit进行单元测试_使用JUnit5对DynamoDB应用程序进行单元测试

使用junit进行单元测试在上一篇文章中&#xff0c;我描述了新的Java 2 AWS开发工具包&#xff0c;它为调用不同AWS服务的Java客户端提供了非阻塞IO支持。 在本文中&#xff0c;我将介绍一种用于单元测试AWS DynamoDB调用的方法。 有几种方法可以启动DynamoDB的本地版本– 1. …

h5jumppage.php,h5使用webviewjsbridge跟原生交互,点击标签调用2次webview

问题描述使用vue循环一个标签列表&#xff0c;点击列表里面的标签&#xff0c;调用app给的跳转页面的方法&#xff0c;第一次跳转页面后&#xff0c;点击返回按钮回到本页面&#xff0c;再次点击列表里面的标签&#xff0c;调用了2次webview&#xff0c;只有第一次点击的时候正…

Servlet的学习笔记

文章目录基本介绍入门步骤执行原理Servlet 生命周期线程安全问题解决方式Servlet 注解配置Servlet 继承与实现体系基本介绍 servlet&#xff0c;server applet&#xff0c;服务器端小程序 servlet 是一个接口&#xff0c;定义了 Java 类被浏览器访问&#xff08;tomcat 识别&…

spring框架介绍_Spring框架介绍

spring框架介绍这是Spring框架和Spring核心概念的简介。 在本教程中&#xff0c;我们将介绍Spring Framework的主要优点和功能。 在随后的教程中&#xff0c;我们将学习有关Spring和Spring Boot的更多信息。 总览 我们知道&#xff0c; Spring框架是Java开发人员中最受欢迎的应…

Java注解(Annotation)的学习

文章目录注解定义作用分类API 文档注解JDK 预定义的注解自定义注解注解的格式注解的本质注解的属性属性的返回值类型属性的特点属性的赋值元注解TargetRetentionDocumentedInherited解析注解总结注解定义 注解( Annotation)&#xff0c;也叫元数据。一种代码级别的说明。它是 …

oracle数据库硬恢复,Oracle数据库的可恢复性设置

整理自《Oracle 11g OCP/OCA 认证指南》001为了保证数据库的最大可恢复性&#xff0c;必须多路复用控制文件&#xff1b;必须多路复用联机重做日志&#xff1b;必须以归档日志模式运行数据库&#xff0c;并多路复用归档日志文件&#xff1b;最后必须作常规备份。002 保护控制文…

rest api如何创建_创建一个安全的Spring REST API

rest api如何创建“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 “如果有用&#xff0c;它将被修改。” 那些智慧的话来自我的QA老师…

IntelliJ IDEA 的 Build Project/Build Module/构建项目/构建模块/构建工程

文章目录Build ModuleRebuild ModuleBuild Module&#xff0c;构建模块。所谓“构建”&#xff0c;就是“构建”包及字节码文件&#xff0c;其实就是编译源码文件的动作了。所以 Build Module&#xff0c;就是把 src 目录的源代码文件以及 resources 下的资源文件&#xff0c;构…

oracle 修改nls_characterset,ORACLE NLS_CHARACTERSET字符集的更改

ORACLE NLS_CHARACTERSET字符集的更改      数据库创建以后&#xff0c;如果需要修改字符集&#xff0c;通常需要重建数据库&#xff0c;通过导入导出的方式来转换。      我们也可以通过以下方式更改      ALTER DATABASE CHARACTER SET      注意&#xff1a…

commons cli_从Commons CLI迁移到picocli

commons cli最初于2002年发布的Apache Commons CLI可能是使用最广泛的Java命令行解析器&#xff0c;但是它的API显示了它的年龄。 寻找具有最少样板代码的现代方法的应用可能对picocli感兴趣。 为什么要花麻烦的钱进行迁移&#xff0c;以及如何将基于Commons CLI的应用程序迁移…

乘方(幂)的运算法则/规则

文章目录乘方的定义运算法则正分数指数幂法则负分数指数幂法则同底数幂法则负整数指数幂法则乘方的定义 求相同因数的积叫做乘方。乘方运算的结果叫幂。 当 ana^nan 看作 a 的 n 次乘方的结果时&#xff0c;也可读作“a 的 n 次幂”或“ a 的 n 次方”。其中&#xff0c;a 叫…

php响应式布局,响应式布局之弹性布局的介绍

响应式布局的实现是前端工程中一个非常大的跨越&#xff0c;它非常灵活的可塑造性使得同一个网站能在不同的终端设备上展现出不同的活力。就今天这个机会&#xff0c;我想与大家分享并探讨一些常用来实现响应式布局方法中的弹性布局。弹性布局是一种十分方便的&#xff0c;只需…

qt弹簧教程_弹簧启动执行器教程

qt弹簧教程朋友您好&#xff0c;在本教程中&#xff0c;我们将学习弹簧执行器及其所有帮助。 1.什么是弹簧执行器&#xff1f; 2.如何在Maven项目或Gradle项目中添加弹簧执行器&#xff1f; 3.创建一个具有Spring Actuator依赖项的Spring Boot项目。 4.使用弹簧执行器端点监…

驾驶证遗失如何补发

第六十三条机动车驾驶证遗失的&#xff0c;机动车驾驶人应当向机动车驾驶证核发地或者核发地以外的车辆管理所申请补发。申请时应当填写申请表&#xff0c;并提交以下证明、凭证&#xff1a; &#xff08;一&#xff09;机动车驾驶人的身份证明&#xff1b; &#xff08;二&…