自己定义示例
冒泡的if判断是精髓,影响着从大还是从小,所以可以从用接口中compare()比较两个大小返回的值,他比较的方式是两个数相减
替换之后全是99
import java.util.Arrays;
import java.util.Comparator;
/*
@author:我与java相爱相杀---c语言梦开始的地方
今天又是努力学习的一天!!!!
ArrayExercise.java
案例:自定义Book类,里面包含name和price,按price排序(从大到小)。要求使用
两种方式排序,对对象的某个属性排序,有一个Book[] books=5本书对象.
使用前面学习过的传递 实现Comparator接口匿名内部类,也称为定制排序。[同学们
完成这个即可10min]
*/public class Main {
public static void main(String[] args) {
Book book[]=new Book[5];
book[0]=new Book("后来",22);
book[1]=new Book("好的",19);
book[2]=new Book("枚举",12);
book[3]=new Book("哈皮",32);
book[4]=new Book("小时",234);
Arrays.sort(book, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
//因为传进来的是父类类型,要给他强转成需要的Book类型
Book a=(Book) o1;
Book b=(Book) o2;
//因为价格是double型,返回值我们是int无法更改,所以我们拿个double值接收一下
double priceval=a.getPrice()-b.getPrice();
if (priceval>0)
{
return 1;
}
else if (priceval<0)
return -1
;
else
return 0;
}
});
System.out.println(Arrays.toString(book));
}
}
class Book{
private String name;
private double price;
public Book(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 "Book{" +
"name='" + name + '\'' +
", price=" + price +
'}';
}
}
结果: