1. 程式人生 > 其它 >前端PC人臉識別登入

前端PC人臉識別登入

Java比較器

Comparable介面的使用(自然排序)

  1. 像String、包裝類等實現了Comparable介面,重寫了compareTo(obj)方法,給出了比較兩個物件的大小方式。

  2. 重寫compareTo(obj)的規則

    1. 如果當前物件this大於形參物件obj,則返回正整數
    2. 如果當前物件this小於形參物件obj,則返回負整數
    3. 如果當前物件this等於形參物件obj,則返回零
  3. 對於自定義類來說,如果需要排序,我們可以讓自定義類實現Compareable介面,重寫compareTo(obj)方法,在compareTo(obj)方法中指明如何排序。

java.util.Comparator介面的使用(定製排序)

  1. 應用背景:當元素的型別沒有實現java.lang.Comparable介面而又不方便修改程式碼,或者實現了java.lang.Comparable介面的排序規則不適合當前的操作,那麼可以考慮使用 Comparator 的物件來排序。
  2. 重寫compare(Object o1,Object o2)方法,比較o1和o2的大小:
    1. 如果方法返回正整數,則表示o1大於o2;
    2. 如果返回0,表示相等;
    3. 如果返回負整數,表示o1小於o2。

Comparable介面與Comparator介面的對比

  1. Comparable介面的方式一旦指定,保證Comparable介面實現類的物件在任何位置都可以比較大小
  2. 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));
    }
}