Arrays.sort()方法之重写排序规则---->详细请参考注释
先构造Book对象类型
class Book {
private String name;
private double price;
public Book(String name, double price) {
this.name = name;
this.price = price;
}
public void setPrice(double price) {
this.price = price;
}
public double getPrice() {
return price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Book{" +
" name= '" + name + '\'' +
", price= " + price + " " +
'}' + "\n";
}
}
再构造主函数
public static void main(String[] args) {
Book[] books = new Book[4];
books[0] = new Book("红楼梦", 100);
books[1] = new Book("金瓶梅", 90);
books[2] = new Book("青年文摘", 50);
books[3] = new Book("java从入门到放弃", 300);
//重构sort排序规则--->按照价格排序 降序排序
Arrays.sort(books, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Book book1 = (Book) o1;
Book book2 = (Book) o2;
double price = book1.getPrice() - book2.getPrice();
//定义降序排序规则
if (price > 0) {
return -1;
} else if (price < 0) {
return 1;
} else {
return 0;
}
//如果要想降序排序,重新定义返回值---->注意返回-1,1 的条件发生了变化
/*
if (price > 0) {
return 1;
} else if (price < 0) {
return -1;
} else {
return 0;
}
*/
}
});
System.out.println(Arrays.toString(books));
//重构sort排序规则--->按照书本名字长度排序,从短到长生序排序
Arrays.sort(books, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Book book1 = (Book) o1;
Book book2 = (Book) o2;
int length = book1.getName().length() - book2.getName().length();
return length;
}
});
System.out.println(Arrays.toString(books));
}