Java中自定义排序

o1-o2
或者o2-o1或者自定义的其他规则的原理是什么

解惑

o1表示位于前面的字符,o2表示后面的字符
意思是o1比o2小,这个时候,需不需要调整它们的顺序
如果你想升序,那么o1比o2小就是想要的;所以返回-1,类比成false;表示我不想调整顺序
如果你想降序,那么o1比o2小不是想要的;所以返回1,类比成true;表示我想调整顺序

自定义排序接口是要结合Arrays.sort()一起使用才能达到排序效果的。
都是工具类的封装、接口应用。
你的目的是排序,所以才会有比较的过程。o1-o2就是判断大小。
给你看下自定义排序接口和自定义Arrays的实现:
如有帮助望采纳。点击我回答右上角【采纳】按钮。

public interface MyComparable {
    //>0调用者大   <0参数大 ==0一样大
    public int compare(Object a);
}

public class Book implements MyComparable{
    private String bookName;
    private int price;
    public Book() {
        super();
    }
    public Book(String bookName, int price) {
        super();
        this.bookName = bookName;
        this.price = price;
    }
    public int getPrice() {
        return price;
    }

    @Override
    public String toString() {
        return "Book [bookName=" + bookName + ", price=" + price + "]";
    }
    @Override
    public int compare(Object a) {
        Book b=(Book)a;
        return this.price-b.price;
    }
}

public class MyArrays {
    //排序,Object是所有类的父类,object对象可以指向任意对象
    public static void sort(Object[] objs){
        for(int j=0;j<objs.length-1;j++){
            for(int i=objs.length-1;i>j;i--){
                MyComparable a=(MyComparable)objs[i];
                MyComparable b=(MyComparable)objs[i-1];
                if(a.compare(b)<0){
                    Object temp=objs[i];
                    objs[i]=objs[i-1];
                    objs[i-1]=temp;
                }
            }
        }
    }
}

测试:

public class Demo {
    public static void main(String[] args) {
        Book[] books=new Book[]{
                new Book("C",23),
                new Book("Java",109),
                new Book("Other",10)
        };
        MyArrays.sort(books);
        display(books);
    }
 
    public static void display(Object[] objs){
        for(int i=0;i<objs.length;i++){
            System.out.println(objs[i]+"");
        }
    }
}

比较两个对象 A 和 B A小于B返回 -1 相等返回0 A大于B返回1
需要自己实现compareTo方法

有个Comparable接口,实现它的compareTo()方法