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

Java中的排序

Comparable接口:自然排序

案例:将产品按照价格从低到高排序,如果价格相同,则按名称ASCII大小排序

public class Test {public static void main(String[] args) {Product[] arr = new Product[]{new Product(new StringBuilder("产品1"), 5000),new Product(new StringBuilder("产品2"), 5555),new Product(new StringBuilder("产品3"), 6000),new Product(new StringBuilder("产品4"), 5000)};Arrays.sort(arr);for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}
class Product implements Comparable {private StringBuilder name;private double price;public Product() {}public Product(StringBuilder name, double price) {this.name = name;this.price = price;}public StringBuilder getName() {return name;}public void setName(StringBuilder name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}@Overridepublic String toString() {return "Product{" +"name=" + name +", price=" + price +'}';}@Override// 从小到大排序public int compareTo(Object o) {if (this == o) {return 0;}if (o instanceof Product) {Product p = (Product) o;// 两个价格换个位置就可以实现从大到小排序了int num = Double.compare(this.getPrice(), p.getPrice());if (num != 0) {return num;}// 价格相同再比较名称// 两个名称换个位置就可以实现从大到小排序了return this.getName().compareTo(p.getName());}throw new RuntimeException("异常");}
}

运行结果
在这里插入图片描述

Comparator接口:定制排序

public class Test {public static void main(String[] args) {Product[] arr = new Product[]{new Product(new StringBuilder("产品1"), 5000),new Product(new StringBuilder("产品2"), 5555),new Product(new StringBuilder("产品3"), 6000),new Product(new StringBuilder("产品4"), 5000)};Comparator comparator = new Comparator(){@Override// 按照价格从高到低排序public int compare(Object o1, Object o2) {if (o1 instanceof Product && o2 instanceof Product) {Product p1 = (Product) o1;Product p2 = (Product) o2;return Double.compare(p2.getPrice(), p1.getPrice());}throw new RuntimeException("异常");}};// 将定制排序传入sort中,相当于覆盖之前已有的排序方式Arrays.sort(arr, comparator);for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}
}

运行结果
在这里插入图片描述


http://www.mrgr.cn/news/65291.html

相关文章:

  • 前端部署到Nginx服务器后产生的一些问题原因,如请求接口报错,或刷新页面后报500错误……
  • Java之包,抽象类,接口
  • 使用 pytorch 运行预训练模型的框架
  • 苍穹外卖WebSocket无法建立连接 (修改前端代码)
  • 单体架构的 IM 系统设计
  • Qt:信号和槽
  • 爱普生SG-8101CA可编程晶振应用在工业自动化机器人
  • 从0开始学习Linux——文本编辑器
  • java动态导入导出excel,javassist动态创建类
  • C/C++ stackful 有栈协同程式的一些缺点。
  • django电商易购系统-计算机设计毕业源码61059
  • JAVA通过AOP自定义注解记录日志
  • 100种算法【Python版】第38篇—— Tarjan算法
  • 智能推荐系统介绍
  • 【人工智能-初级】练习题:matplotlib基础练习30例
  • Python 中的迭代器与生成器详解
  • 关于halcon的可变形logo模板匹配find_local_deformable_modle_xld解释及简化匹配代码
  • JavaScript函数
  • 物联网赋能的人工智能图像检测系统
  • 探索 Python 的新天地:Helium 库揭秘
  • 代码随想录训练营Day15 | 530.二叉搜索树的最小绝对差 - 501.二叉搜索树中的众数 - 236. 二叉树的最近公共祖先
  • 15.函数的重载
  • 04741计算机网络原理真题-CRC的计算-案例分析
  • PHP+MySQL开发的一套招聘管理系统开发案例源码功能介绍
  • H5页面在线预览pdf
  • 照明灯十大知名品牌有哪些?2024灯具十大公认品牌排行榜出炉!