1.自然排序:java.lang.Comparable
是一个接口,重写compareTo方法, 还可以使用Arrays.sort 或 Collections.sort方法
class A implements Comparable{
@Override
public int compareTo(Object o ){
}
}
Comparable
的典型实现
:
(
默认都是从小到大排列的
)
String
:按照字符串中字符的
Unicode
值进行比较
Character
:按照字符的
Unicode
值来进行比较
数值类型对应的包装类以及
BigInteger
、
BigDecimal
:按照它们对应的数值大小进行比较
Boolean
:
true
对应的包装类实例大于
false
对应的包装类实例
Date
、
Time
等:后面的日期时间比前面的日期时间大
public class ComparableTest {
public static void main(String[] args) {
Goods g1 = new Goods("三国",18);
Goods g2 = new Goods("水浒",29);
System.out.println(g1.compareTo(g2));
Goods [] all = new Goods[4];
all[0]=new Goods("111",2);
all[1]=new Goods("222",26);
all[2]=new Goods("333",12);
all[3]=new Goods("444",22);
Arrays.sort(all);
System.out.println(Arrays.toString(all));
}
}
class Goods implements Comparable{
//属性
private String name;
private int price;
//构造器
public Goods(String name, int price) {
this.name = name;
this.price = price;
}
//get、set方法
//toString方法
//重写compareTo方法
@Override
public int compareTo(Object o) {
if(o instanceof Goods){
Goods gg = (Goods) o;
if (this.price>gg.price){
return 1;
}else if(this.price<gg.price){
return -1;
}
return 0;
}
throw new RuntimeException("输入数据类型不一致");
}
}
2.定制排序:java.util.Comparator
如果没有实现Comparable接口,可以考虑使用Comparator,重写compare方法,
Arrays.sort(goods,new comparator(){
@Override
public int compare(Object o1,Object o2){
}
});
package com.zkx.stringtest;
import java.util.Arrays;
import java.util.Comparator;
/**
* @author zkx
* @create 2022-02-11 22:35
*/
public class ComparatorTest {
public static void main(String[] args) {
Good [] goods = new Good[4];
goods[0]= new Good("666",22);
goods[1]= new Good("222",21);
goods[2]= new Good("111",2);
goods[3]= new Good("444",33);
Arrays.sort(goods, new Comparator(){
@Override
public int compare(Object o1, Object o2) {
Good g1 = (Good) o1;
Good g2 = (Good) o2;
return g1.getName().compareTo(g2.getName());
}
});
System.out.println(Arrays.toString(goods));
}
}
class Good {
private String name;
private int price;
public Good(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Good{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
3.System类
https://blog.youkuaiyun.com/PorkBird/article/details/113695807
4.Math类
同上
5.BigInteger与BigDecimal
同上
本文详细讲解了Java中Comparable接口的使用,包括String和Character的默认排序规则,以及如何通过自定义Goods类进行价格比较。同时介绍了Comparator接口的使用方法,以定制Goods对象按名称排序的示例。展示了如何在Arrays和Collections中应用这些概念。
1675

被折叠的 条评论
为什么被折叠?



