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()方法