1. 程式人生 > >Comparable介面和Comparator介面的使用

Comparable介面和Comparator介面的使用

1、Comparable介面生命了一個比較兩個物件大小的comparaTo()方法。

例如:

public class Edge implements Comparable<Edge>{


public  int a;
public  int b;
public int cost;

@Override
public int compareTo(Edge e) {
if(e.cost>this.cost){
return -1;
}else if(e.cost==this.cost){
return 0;
}
else{
return 1;
}
}


}

2、Comparator介面在優先順序列表中用到,作為引數傳遞,裡面的方法是compare()。後來又在treemap中的建構函式中遇到。

如:
          構造一個新的、空的樹對映,該對映根據給定比較器進行排序。
那treeSet也是一樣:
          構造一個新的空 TreeSet,它根據指定比較器進行排序。

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Queue;


public class test {
private String name;
private int population;
public test(String name, int population)
{
this.name = name;
   this.population = population;
}
public String getName()
{
    return this.name;
}


public int getPopulation()
{
    return this.population;
}
public String toString()
{
    return getName() + " - " + getPopulation();
}
public static void main(String args[])
{
Comparator<test> OrderIsdn =  new Comparator<test>(){
public int compare(test o1, test o2) {
// TODO Auto-generated method stub
int numbera = o1.getPopulation();
int numberb = o2.getPopulation();
if(numberb > numbera)
{
return 1;
}
else if(numberb<numbera)
{
return -1;
}
else
{
return 0;
}

}




};
Queue<test> priorityQueue =  new PriorityQueue<test>(11,OrderIsdn);

   

test t1 = new test("t1",1);
test t3 = new test("t3",3);
test t2 = new test("t2",2);
test t4 = new test("t4",0);
priorityQueue.add(t1);
priorityQueue.add(t3);
priorityQueue.add(t2);
priorityQueue.add(t4);
System.out.println(priorityQueue.poll().toString());
}
}

相關推薦

Java中的Comparable介面Comparator介面

介紹Comparable<T>介面和Comparator<T>介面都是JDK中提供的和比較相關的介面。使用它們可以對物件進行比較大小,排序等操作。這算是之後排序的先導知識吧。Comparable, 字面意思是“可以比較的”,所以實現它的類的多個例項應該可以相互比較“大小”或者

Comparable介面Comparator介面的區別(通俗版)

概述 Comparable和Comparator都是用來實現集合中元素的比較、排序的。 Comparable是在集合內部定義的方法實現的排序,位於java.lang下。 Comparator是在集合外部實現的排序,位於java.util下。 Comparable是一個物件本

【java】實現Comparable介面Comparator介面,並重寫compareTo方法compare方法

實現Comparable介面和Comparator介面,並重寫compareTo方法和compare方法 2016年08月11日 14:39:25 蘇尹 閱讀數:10772更多 個人分類: 學習筆記 實體類:java.lang.Comparable(介面) + coma

實現Comparable介面Comparator介面,並重寫compareTo方法compare方法

實體類:java.lang.Comparable(介面) + comareTo(重寫方法),業務排序類 java.util.Comparator(介面) + compare(重寫方法). 這兩個介面我們非常的熟悉,但是 在用的時候會有一些不知道怎麼下手的感覺,現在用案例

Comparable介面Comparator介面的使用

1、Comparable介面生命了一個比較兩個物件大小的comparaTo()方法。 例如: public class Edge implements Comparable<Edge>{public  int a;public  int b;public int

Comparable介面Comparator介面的比較

概述        在實際應用中,我們往往有需要比較兩個自定義物件大小的地方。而這些自定義物件的比較,就不像簡單的整型資料那麼簡單,它們往往包含有許多的屬性,我們一般都是根據這些屬性對自定義物件進行比較的。所以Java中要比較物件的大小或者要對物件的集合進行排序,需要通過比較

Java中實現物件的比較:Comparable介面Comparator介面

在實際應用中,我們往往有需要比較兩個自定義物件大小的地方。而這些自定義物件的比較,就不像簡單的整型資料那麼簡單,它們往往包含有許多的屬性,我們一般都是根據這些屬性對自定義物件進行比較的。所以Java中要比較物件的大小或者要對物件的集合進行排序,需要通過比較這些物件的某些屬性

):Comparable介面Comparator介面

目錄 1 介紹 2 Comparable介面 3 Comparator介面 4 總結 1 介紹       有這樣2個人,一個人光頭,一個人有黑色頭髮,現在不允許染髮,只允許光頭的帶假髮,理由是有頭髮的人沒有必要再帶假髮,那麼誰可以有多種顏色的頭髮?在這種情況下,有頭髮的人,因為他的頭髮和自身繫結在一起,

集合框架(五)使用Comparable介面Comparator介面來比較元素

1、有時希望將元素插入到一個樹集合中個,這些元素可能不是java.lang.Comparable的例項,這時可以定義一個比較器來比較這些元素。即需要建立一個實現java.util.Comparator介面的類。Comparator介面有兩個方法:compare和

Java中實現Comparable介面Comparator介面的排序演算法效率比較

在PAT Basic Level的真題中,有”德才論“這麼一題(點選可開啟題目)。 最開始我是構造了一個學生類,存放學生資訊,實現Comparator介面,遺憾的是,後臺測試時,每一個測試用例皆顯示程式執行超時。 public class Main ... class S

ComparableComparator介面比較

Java提供了只包含一個compareTo()方法的Comparable介面。這個方法可以個給兩個物件排序。具體來說,它返回負數,0,正數來表明已經存在的物件小於,等於,大於輸入物件。 Java提供了包含compare()和equals()兩個方法的Comparator介面。compare()方

Comparable Comparator 介面的比較

背景 Comparable equals compareTo Comparator

Comparable Comparator介面

Comparable 是提供一定排序的介面,而Comparator介面通過我們的自定義來比較。 所以Comparable希望提供自然順序的類,介面中的一個方法 int compareTo(object o)比較當前物件,在物件之後返回正值; 而Comparato

Java Comparable排序介面Comparator比較器介面

       實現Comparable介面的類支援排序,假設現在存在“實現Comparable介面的類的物件的List列表(或陣列)”,則該List列表(或陣列)可以通過 Collections.so

JAVA中Arrays.sort()使用兩種方式(ComparableComparator介面)對物件或者引用進行排序

package com.dt.Sort; import java.util.Arrays; import java.util.Comparator; /**  * 使用Comparator介面:編寫多個排序方式類實現Comparator介面,並重寫新Comparator介面中的compare()方法 pub

Java中ComparableComparator介面區別分析

Comparable 簡介 Comparable 是排序介面。 若一個類實現了Comparable介面,就意味著“該類支援排序”。  即然實現Comparable介面的類支援排序,假設現在存在“實現Comparable介面的類的物件的List列表(或陣列)”,則該List

ComparableComparator介面是幹什麼的?列出它們的區別

Java提供了只包含一個compareTo()方法的Comparable介面。這個方法可以個給兩個物件排序。具體來說,它返回負數,

Java Comparable Comparator 介面詳解

> 本文基於 JDK8 分析 ## Comparable Comparable 介面位於 java.lang 包下,Comparable 介面下有一個 compareTo 方法,稱為自然比較方法。一個類只要實現了這個介面,意味著該類支援自然排序 所謂自然排序,就是按預設規則組成的排序,例如 12

Java中類的比較與排序方法(應用Comparable介面Comparator介面)

引言 在平時寫Java的程式的時候,如果要進行一些基本型別的變數的比較,可以很方便得呼叫’Math.max()’、Math.min()等方法,如果要對陣列或者列表進行排序,也可以用Arrays.sort()和Collections.sort()等已經封裝好的方法來進行。但是,如果是一個自

關於Comparable介面Comparetor介面的兩種排序

Comparable介面 TreeSet:實現去重和排序的方式:1.讓元素去實現Comparable介面,重寫compareTo方法 public class Demo { public static void main(String[] args) {