app開(kāi)發(fā)網(wǎng)站建設(shè)培訓(xùn)班揭陽(yáng)百度快照優(yōu)化排名
案例:自定義Book類,里面包含name和price,按price排序(從大到小)。要求使用兩種方式排序,有一個(gè) Book[] books= 4本書(shū)對(duì)象。
使用前面學(xué)習(xí)過(guò)的傳遞實(shí)現(xiàn)Comparator接口匿名內(nèi)部類,也稱為定制排序??梢园凑誴rice (1)從大到小〔2)從小到大(3)按照書(shū)名長(zhǎng)度從大到小
public class ArrayExercise {public static void main(String[] args) {Book[] books = new Book[4];books[0] = new Book("紅樓夢(mèng)", 100);books[1] = new Book("金瓶梅新", 90);books[2] = new Book("青年文摘2023", 5);books[3] = new Book("java從入門(mén)到放棄", 300);//Arrays.sort(books, new Comparator() {// 這里是對(duì)Book數(shù)組排序,因此o1和o2就是Book對(duì)象@Overridepublic int compare(Object o1, Object o2) {Book book1 = (Book) o1;Book book2 = (Book) o2;double pdiff = book2.getPrice()-book1.getPrice();//這里進(jìn)行了一個(gè)轉(zhuǎn)換if(pdiff > 0) {//如果發(fā)現(xiàn)結(jié)果和我們輸出的不一致,就修改一下返回的1和-1return -1;} else if(pdiff < 0) {return 1;} else {return 0;}}});System.out.println(Arrays.toString(books));}
}class Book {private String name;private int price;public Book(String name, int price) {this.name = name;this.price = price;}public int getPrice() {return price;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", price=" + price +'}';}
}