Arrays 排序

news/2025/1/20 0:17:10/文章来源:https://www.cnblogs.com/xwdzj/p/18680565

正常来说 Arrays可以用于数组排序, 但如果数组里面是引用类型地址就会报错,这时候,
就需要加个功能(实现接口/继承接口) Comparable接口来定引用类型对象的排序规则(以..属性值进行排序)

正常Arrays.sort( 数组对象)进行排序时 , 会在排序的时候将数组对象进行调用comparato方法( Student o),两两冒泡比较
返回值1 : 告诉sort排序 左边大于右边,放后面,
返回值-1: 告诉sort排序 左边小于右边不用动
返回值0 : 告诉sort排序左边与右边相等,没事

1. 基本数据类型排序

Student[] students = new Student[4];  students[0] = new Student("蜘蛛精","169.5",23);  students[1] = new Student("至尊宝","198.5",35);  students[2] = new Student("紫霞精","162.5",16);  students[3] = new Student("猪八戒","173.5",19);  Arrays.sort(students); //原本用sort看student有没有排序规则,没有报错,//有的化,就按照指定规则排序( 排序谁,谁实现接口comparable的comparto方法自定义排序)  System.out.println(Arrays.toString(students));//报错,不能对数组里的数组进行排序,不知道按照什么规则

2.以对象的属性进行排序

默认正向排序 ,若想反向排序 return -(this.age-o.age);return (o.age - this.age)

package Arrays_sort_comparable;  public class Student implements Comparable <Student> {  
//    目的,对数组的Arrays.sort 的排序进行按照指定元素排序 ,实现comparable接口  private  String name;  private  String height;  private  int age;  public Student() {  }  public Student(String name, String height, int age) {  this.name = name;  this.height = height;  this.age = age;  }  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public String getHeight() {  return height;  }  public void setHeight(String height) {  this.height = height;  }  public int getAge() {  return age;  }  public void setAge(int age) {  this.age = age;  }  @Override  public int compareTo(Student o) {  //约定1 : 认为左边对象 大于右边对象 ,请返回正整数  //这里height是字符串,需要转成double类型 使用Double.valueof("字符串")  
/*   if (Double.valueOf(this.height )> Double.valueOf(o.height)){  return 1; //不换位置  }*/// return this.age -  o.age; //升序   最简单if (this.age > o.age){  return 1; //不换位置  }  //约定2 : 认为左边对象 小于右边对象 ,请返回负整数  else if (this.age < o.age){  return  -1; //交换位置  }  //约定3 : 认为左边对象 等于右边对象 ,请返回0  return 0;//保持不变,索引进入下一个  }  @Override  public String toString() {  return "Student{" +  "name='" + name + '\'' +  ", height='" + height + '\'' +  ", age=" + age +  '}';  }  }

3. 忽略大小写首字符排序

public static void main(String[] args) {  String []names = {"body","anager", "Lambda","jack"};  //    对字符串进行排序,忽略首字符大小写进行排序  Arrays.sort(names, new Comparator<String>() {  @Override  public int compare(String o1, String o2) {  //  return  o1.compareToIgnoreCase(o2); //忽略首字符大小写进行排序  }  });  System.out.println(Arrays.toString(names));  }

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

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

相关文章

Spring Boot 自动配置原理详解

引言 Spring Boot 的一大亮点是它能够自动配置(Auto-Configuration)Spring应用程序,极大地简化了Spring应用的创建过程。开发者只需添加所需的依赖,Spring Boot就会根据这些依赖和一些预设条件自动装配相应的组件,从而减少了大量样板代码的编写。 第三方组件的集成方式 对…

传奇

毋庸置疑,很多人的心里,都有一个传奇、传奇3,80后、90后,甚至70后尤甚。当然也包括我。主要当然因我曾经是盛大游戏传奇工作室研发团队的一员,且是盛大传奇3项目部的第一个程序技术人员,内心对传奇、传奇3的感情非同一般。因工作等原因,我早已不再从事传奇类游戏的开发研…

常用工具

类似gdb的bash调试工具bashdb: https://sourceforge.net/projects/bashdb/files/bashdb/ 非常好用,结合vscode bashdb(bash debug) shift + command + d,配置 .vscode/launch.json

《CPython Internals》阅读笔记:p232-p249

《CPython Internals》学习第 13天,p232-p249 总结,总计 18 页。 一、技术总结 无。 二、英语总结(生词:1) 1.overhead (1)overhead: over-("above") + head(“top part, uppermost section”) overhead的字面意思是:above the head,后来演变成"represent …

2025春秋杯冬季赛MISC部分题目复现

简单算术 异或直接得出flagfind_me 进游戏用fill指令把命令方块填充掉然后切创造或者观察找将文件解压出来后看结构是MC的存档文件,于是用MC跑,提示要找雪屋,在附近雪屋的箱子里有给压缩包密码 解压后得到:unai?535.0a20[189.[4049[ax30[e.j60xaj91x8+随波逐流一把梭音频的秘密…

CogAgent: A Visual Language Model for GUI Agents

CogAgent: 利用VLM操作GUI。主要内容 提出了一个18B的VLM模型CogAgent(CogVLM的新版本),旨在提高对于GUI的理解、导航和交互能力。利用高分辨率和低分辨率编码器适应不同分辨率的输入,在9个VQA benchmarks上取得了sota。同时,CogAgent利用截屏输入,在PC和安卓GUI导航任务…

【原创】MAC OS 本地搭建部署 dify

一、什么是 dify?Dify 是一个开源的大语言模型(LLM)应用开发平台,融合了后端即服务(Backend as Service, BaaS)和 LLMOps 理念,旨在简化和加速生成式AI应用的创建和部署。它支持多种大型语言模型(如OpenAI的GPT系列、Claude3等),并提供强大的数据集管理功能、可视化的…

apollo收紧权限

apollo收紧权限 1 系统权限管理 限制只有超级管理员可以创建项目。 1.1 系统权限管理参数 apollo 用户默认是系统的超级管理员,拥有管理所有项目和项目下所有命名空间的权限。 apollo 用户登录系统,点击右上角的管理员工具.系统权限管理。(1) 为用户添加创建应用权限(系统参数…

2025春秋杯DAY2DAY3部分wp

2025春秋杯DAY2DAY3部分wp DAY2 WEB easy_ser 源码如下 <?php //error_reporting(0); function PassWAF1($data){$BlackList = array("eval", "system", "popen", "exec", "assert", "phpinfo", "shell_…

SIP MESSAGE消息中的Content-Type

The Content-Type header field indicates the media type of the message-body sent to the recipient. SIP消息中<Content-Type> 消息头表示发送的消息体的媒体类型。如果消息体不为空,则必须存在 Content-Type 消息头。如果消息体为空且 Content-Type 消息头存在,则…

Hugging Face功能介绍,及在线体验当前顶级文生图模型Flux

Hugging Face简介 对于非机器学习或深度学习领域的人士来说,Hugging Face这个名字可能并不耳熟。然而,随着近年来大规模模型的迅速崛起,相信大家或多或少都有所接触。如果你对这一领域感兴趣,并在GitHub上查阅过一些开源资料,那么你一定会频繁地看到Hugging Face的身影。例…

[JavaScript] 深入理解流程控制结构

在编程中,流程控制是指控制代码执行顺序的机制。通过流程控制结构,我们可以根据不同的条件执行不同的代码块,实现逻辑判断、循环遍历和跳出循环等功能。常见的流程控制语句有:if-else、switch-case、for、while,以及控制语句break和continue。本文将详细讲解这些控制结构的…