[轉] nginx關於root與alias的區別
阿新 • • 發佈:2021-06-23
Java比較器
Comparable介面的使用(自然排序)
-
像String、包裝類等實現了Comparable介面,重寫了compareTo(obj)方法,給出了比較兩個物件的大小方式。
-
重寫compareTo(obj)的規則
- 如果當前物件this大於形參物件obj,則返回正整數
- 如果當前物件this小於形參物件obj,則返回負整數
- 如果當前物件this等於形參物件obj,則返回零
-
對於自定義類來說,如果需要排序,我們可以讓自定義類實現Compareable介面,重寫compareTo(obj)方法,在compareTo(obj)方法中指明如何排序。
java.util.Comparator介面的使用(定製排序)
- 應用背景:當元素的型別沒有實現java.lang.Comparable介面而又不方便修改程式碼,或者實現了java.lang.Comparable介面的排序規則不適合當前的操作,那麼可以考慮使用 Comparator 的物件來排序。
- 重寫compare(Object o1,Object o2)方法,比較o1和o2的大小:
- 如果方法返回正整數,則表示o1大於o2;
- 如果返回0,表示相等;
- 如果返回負整數,表示o1小於o2。
Comparable介面與Comparator介面的對比
- Comparable介面的方式一旦指定,保證Comparable介面實現類的物件在任何位置都可以比較大小
- Comparator介面卻是臨時性的一種比較
舉例
package com.yicurtain.CommonClass; public class Goods implements Comparable{ private String name; private double price; public Goods() { } public Goods(String name, double price) { this.name = name; this.price = price; } public String getName() { return name; } public double getPrice() { return price; } public void setName(String name) { this.name = name; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "Goods{" + "name='" + name + '\'' + ", price=" + price + '}'; } @Override public int compareTo(Object o) { if (o instanceof Goods){ Goods goods=(Goods)o;//Object>Goods if (this.price> goods.price){ return 1; }else if (this.price< goods.price){ return -1; } return 0; } throw new RuntimeException("輸入的資料型別不一致"); } }
package com.yicurtain.CommonClass;
import java.util.Arrays;
public class GoodsTest {
public static void main(String[] args) {
Goods[] all = new Goods[4];
all[0]=new Goods("紅樓夢",100);
all[1]=new Goods("西遊記",80);
all[2]=new Goods("三國演義",140);
all[3]=new Goods("水滸傳",120);
Arrays.sort(all);
System.out.println(Arrays.toString(all));
}
}