Java 比较器
2021/5/22 20:26:14
本文主要是介绍Java 比较器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、Comparable接口的使用举例
1、像String、包装类等实现了Comparable接口,重写了compareTo( ) 方法,给出了比较两个对象大小的方式。
2、像String、包装类重写compareTo( )方法后,进行了虫小到大的排列。
3、重写compareTo( )的规则:
如果当前对象this大于形参对象obj,则返回正整数。
如果当前对象this小于形参对象obj,则返回负整数。
如果当前对象this等于形参对象obj,则返回零。
4、对于自定义类如果需要排序可以实现Comparable接口重写compareTo( )方法。在compareTo( )方法中指明如何排序。
public class Goods implements Comparable { private String name; private double price; public Goods() { } public Goods(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "Goods{" + "name='" + name + '\'' + ", price=" + price + '}'; } //指明商品比较大小的方式 @Override public int compareTo(Object o) { if (o instanceof Goods) { Goods goods = (Goods) o; if (this.price > goods.price) { return 1; } if (this.price == goods.price) { return 0; } if (this.price < goods.price) { return -1; } } throw new RuntimeException("参数错误!"); } }
@Test public void test1(){ Goods[] arr = new Goods[4]; arr[0] = new Goods("联想",34); arr[1] = new Goods("戴尔",24); arr[2] = new Goods("华硕",50); arr[3] = new Goods("蓝天",80); Arrays.sort(arr); System.out.println(Arrays.toString(arr));//[Goods{name='戴尔', price=24.0}, Goods{name='联想', price=34.0}, Goods{name='华硕', price=50.0}, Goods{name='蓝天', price=80.0}] }
二、Comparator接口的使用:定制排序。
1、背景:当元素的类型没有实现Comparable接口而又不方便修改代码,或者实现了Comparable接口但排序规则不适合当前的操作,那么可以考虑使用Comparator对象来排序。
2、重写compare( Object o1 ,Object o2 )方法,比较O1和O2的大小。如果方法返回正数,则代表o1大于o2 ;如果返回0,则代表o1等于o2;如果返回负数,则o1小于o2。
@Test public void test3(){ Goods[] arr = new Goods[4]; arr[0] = new Goods("联想",34); arr[1] = new Goods("戴尔",24); arr[2] = new Goods("华硕",50); arr[3] = new Goods("蓝天",80); Arrays.sort(arr, new Comparator<Goods>() { @Override public int compare(Goods o1, Goods o2) { System.out.println("******************"); if (o1.getName().equals(o2.getName())){ return -Double.compare(o1.getPrice(),o2.getPrice()); }else { return -o1.getName().compareTo(o2.getName()); } } }); System.out.println(Arrays.toString(arr)); }
这篇关于Java 比较器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程