当前位置: 首页 > news >正文

Java--常见的接口--Comparable

String类型的compareTo方法:

在String引用中,有一个方法可以比较两个字符串的大小:

和C语言中是一样的,两个字符串一个字符一个去比较。

那么这个方法是怎么实现的呢?

其实就是一个接口:Comparable接口里面的compareTo方法。

也就是如果能扩展这个接口,然后重写这个方法我们也可以在不同的类中实现自己想实现的方法。

比较两个学生年龄大小:

   @Overridepublic int compareTo(Object o) {Student student = (Student) o;return this.age- student.age;}

 比较两个学生名字长短:
 

    //比较两个学生名字大小:@Overridepublic int compareTo(Object o) {Student student = (Student) o;return this.name.compareTo(student.name);}

在main方法中测试:

用名字比较:

    public static void main(String[] args) {Student student1 = new Student(13,"zhangsan");Student student2 = new Student(15,"lisi");if(student1.compareTo(student2)>0){System.out.println("student1>student2");}else{System.out.println("student1<=student2");}}


用年龄比较:

两个结果是不一样的。

自写排序方法:

        我们可以借助该方法写一个排序方法:
 

    public static void mySort(Comparable[] comparables) {for (int i = 0; i < comparables.length - 1; i++) {for (int j = 0; j < comparables.length - 1 - i; j++) {//if(comparables[j] > comparables[j+1]) {if (comparables[j].compareTo(comparables[j + 1]) > 0) {//交换Comparable tmp = comparables[j];comparables[j] = comparables[j + 1];comparables[j + 1] = tmp;}}}}

用多态写是比较合理的!

当然也可以不用多态:

@Overridepublic int compareTo(Object o) {Student student = (Student) o;return this.name.compareTo(student.name);}public static void mySort(Student[] students){for(int i = 0;i<students.length-1;i++) {for (int j = 0; j <students.length-i-1; j++) {if(students[j].compareTo(students[j+1])>0){Student tmp = students[j];students[j] = students[j+1];students[j+1] = tmp;}}}}

建议用多态!!

相关文章:

Java--常见的接口--Comparable

String类型的compareTo方法&#xff1a; 在String引用中&#xff0c;有一个方法可以比较两个字符串的大小&#xff1a; 和C语言中是一样的&#xff0c;两个字符串一个字符一个去比较。 那么这个方法是怎么实现的呢&#xff1f; 其实就是一个接口&#xff1a;Comparable接口里…...

luogu基础课题单 入门 上

【深基2.例5】苹果采购 题目描述 现在需要采购一些苹果&#xff0c;每名同学都可以分到固定数量的苹果&#xff0c;并且已经知道了同学的数量&#xff0c;请问需要采购多少个苹果&#xff1f; 输入格式 输入两个不超过 1 0 9 10^9 109 正整数&#xff0c;分别表示每人分到…...

物理设计-物理数据模型优化策略

物理数据模型优化策略 1. 引言&#xff1a;物理设计的重要性​ 在数据库设计的生命周期中&#xff0c;物理设计是将逻辑模型转化为实际可执行的数据库架构的关键步骤。它直接关系到系统的性能、可扩展性和维护成本。一个优化的物理数据模型能够显著提升数据访问速度&#xff…...

产学研合作赋能产业升级新动能

在当今快速发展的时代&#xff0c;产业升级已成为经济持续增长的关键。而产学研合作模式正以其独特的优势&#xff0c;为产业升级注入新动能。 产学研合作&#xff0c;即将产业、学校与科研机构紧密结合起来。产业提供实际的需求和应用场景&#xff0c;学校培养专业的人才&…...

uniapp tabBar不显示

开发中发现某个页面不显示tabbar,而有的页面显示 需要在tabBar配置中添加需要展示的页面 刚开始我发现登录页面不展示tabbar,把登录页面的路径配置进去就会展示了...

论文阅读《Robust Steganography for High Quality Images》高质量因子图片的鲁棒隐写

TCSVT 2023 中国科学技术大学 Kai Zeng, Kejiang Chen*, Weiming Zhang, Yaofei Wang, Nenghai Yu, "Robust Steganography for High Quality Images," in IEEE Transactions on Circuits and Systems for Video Technology, doi: 10.1109/TCSVT.2023.3250750. 一、…...

node前端开发基本设置

加快下载源速度 要将 npm 切换到淘宝的源镜像&#xff0c;你可以按照以下步骤操作&#xff1a; 查看当前 npm 源&#xff1a; npm config get registry这个命令会显示当前使用的 npm 源地址&#xff0c;默认情况下它会是 https://registry.npmjs.org/。 切换到淘宝镜像&#…...

深入掌握:如何进入Docker容器并运行命令

感谢浪浪云支持发布 浪浪云活动链接 &#xff1a;https://langlangy.cn/?i8afa52 文章目录 查看正在运行的容器使用 docker exec 命令进入容器进入容器的交互式 shell在容器中运行命令 使用 docker attach 命令附加到容器检查容器日志退出容器从 docker exec 方式退出从 docke…...

把设计模式用起来(3)用不好的原因之时机不对

上一篇&#xff1a;《把设计模式用起来&#xff08;3&#xff09;——用不好的原因 之 实践不足》https://blog.csdn.net/nanyu/article/details/141939342 本篇继续讲设计模式用不好的常见原因&#xff0c;这是第二个&#xff1a;使用设计模式的时机不对。 二、时机不对 这里…...

【机器学习随笔】基于kmeans的车牌类型分类注意点

kmeans是无监督的聚类算法&#xff0c;可用于数据的分类。本文尝试用kmeans对车牌类型进行分类&#xff0c;记录使用过程中的注意点。 kmeans使用过程中涉及两个大部分&#xff0c;模型与分析。模型部分包括训练模型和使用模型&#xff0c;分析部分主要为可视化分析。两部分的主…...

matlab处理函数3

1. 直方图均衡化的 Matlab 实现 1.1 imhist 函数 功能&#xff1a;计算和显示数字数字图像的色彩直方图 格式&#xff1a;imhist(I,n) imhist(X,map) 说明&#xff1a;imhist(I,n) 其中&#xff0c;n 为指定的灰度级数目&#xff0c;缺省值为256&#xff1b;imhist(X…...

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中&#xff0c;不同电脑的配置和操作系统&#xff08;如Win11与Win7&#xff09;可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行&#xff0c;需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下&a…...

开源项目低代码表单FormCreate中通过接口加载远程数据选项

在开源项目低代码表单 FormCreate 中&#xff0c;fetch 属性提供了强大的功能&#xff0c;允许从远程 API 加载数据并将其应用到表单组件中。通过灵活的配置&#xff0c;fetch 可以在多种场景下发挥作用&#xff0c;从简单的选项加载到复杂的动态数据处理。 源码地址: Github …...

k8s的搭建

一、安装环境 准备三台主机&#xff1a; 192.168.1.66 k8s-master 192.168.1.77 k8s-node01 192.168.1.88 k8s-node02 网段&#xff1a; Pod ⽹段 172.16.0.0/16 Service ⽹段 10.96.0.0/16 注&#xff1a;宿主机⽹段、Pod…...

人工智能与机器学习原理精解【19】

文章目录 马尔科夫链概述定义与性质分类应用领域收敛性马尔科夫链蒙特卡洛方法 马尔科夫链原理详解一、定义二、特性三、数学描述四、类型五、应用六、示例定义性质转移概率矩阵应用举例结论 马尔科夫链在语音识别和语音合成中的应用一、马尔科夫链在语音识别中的应用1. 基本概…...

DingoDB:多模态向量数据库的实践与应用

DingoDB&#xff1a;多模态向量数据库的实践与应用 1. 引言 在当今数据驱动的时代&#xff0c;高效处理和分析大规模、多样化的数据变得至关重要。DingoDB作为一个分布式多模态向量数据库&#xff0c;为我们提供了一个强大的解决方案。本文将深入探讨DingoDB的特性、安装过程…...

03.01、三合一

03.01、[简单] 三合一 1、题目描述 三合一。描述如何只用一个数组来实现三个栈。 你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标&#xff0c;value表示压入的值。 构造函数会传入一个stackSize参数&#xf…...

github上clone代码过程

从 GitHub 上拉取代码的过程非常简单&#xff0c;一般通过 git clone 命令来完成。以下是详细步骤&#xff1a; 下载git工具 要下载并安装 Git&#xff0c;你可以根据你的操作系统来选择相应的步骤。以下是如何在不同操作系统上安装 Git 的详细说明&#xff1a; 1. 在 Windo…...

ChatGLM3模型搭建教程

一、介绍 ChatGLM3 是智谱 AI 和清华大学 KEG 实验室联合发布的对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型&#xff0c;在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上&#xff0c;ChatGLM3-6B 引入了如下特性&#xff1a; 更强大的基础模型…...

多层建筑能源参数化模型和城市冠层模型的区别

多层建筑能源参数化&#xff08;Multi-layer Building Energy Parameterization, BEP&#xff09;模型和城市冠层模型&#xff08;Urban Canopy Model, UCM&#xff09;都是用于模拟城市环境中能量交换和微气候的数值模型&#xff0c;但它们的侧重点和应用场景有所不同。以下是…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:

根据万维钢精英日课6的内容&#xff0c;使用AI&#xff08;2025&#xff09;可以参考以下方法&#xff1a; 四个洞见 模型已经比人聪明&#xff1a;以ChatGPT o3为代表的AI非常强大&#xff0c;能运用高级理论解释道理、引用最新学术论文&#xff0c;生成对顶尖科学家都有用的…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...