【21期】你能說說Java中Comparable和Comparator的區(qū)別嗎
閱讀本文大概需要 3?分鐘。
Comparable
比較者大于被比較者,返回正整數(shù)
比較者等于被比較者,返回0
比較者小于被比較者,返回負整數(shù)
public?class?Domain?implements?Comparable<Domain>
{
???private?String?str;
???public?Domain(String?str)
???{
???????this.str?=?str;
???}
???public?int?compareTo(Domain?domain)
???{
???????if?(this.str.compareTo(domain.str)?>?0)
???????????return?1;
???????else?if?(this.str.compareTo(domain.str)?==?0)
???????????return?0;
???????else?
???????????return?-1;
???}
???public?String?getStr()
???{
???????return?str;
???}
}
public?static?void?main(String[]?args)
???{
???????Domain?d1?=?new?Domain("c");
???????Domain?d2?=?new?Domain("c");
???????Domain?d3?=?new?Domain("b");
???????Domain?d4?=?new?Domain("d");
???????System.out.println(d1.compareTo(d2));
???????System.out.println(d1.compareTo(d3));
???????System.out.println(d1.compareTo(d4));
???}
0
1
-1
Comparator
o1大于o2,返回正整數(shù)
o1等于o2,返回0
o1小于o3,返回負整數(shù)
public?class?DomainComparator?implements?Comparator<Domain>
{
???public?int?compare(Domain?domain1,?Domain?domain2)
???{
???????if?(domain1.getStr().compareTo(domain2.getStr())?>?0)
???????????return?1;
???????else?if?(domain1.getStr().compareTo(domain2.getStr())?==?0)
???????????return?0;
???????else?
???????????return?-1;
???}
}
public?static?void?main(String[]?args)
{
???Domain?d1?=?new?Domain("c");
???Domain?d2?=?new?Domain("c");
???Domain?d3?=?new?Domain("b");
???Domain?d4?=?new?Domain("d");
???DomainComparator?dc?=?new?DomainComparator();
???System.out.println(dc.compare(d1,?d2));
???System.out.println(dc.compare(d1,?d3));
???System.out.println(dc.compare(d1,?d4));
}
0
1
-1
總結(jié)
對于一些普通的數(shù)據(jù)類型(比如 String, Integer, Double…),它們默認實現(xiàn)了Comparable 接口,實現(xiàn)了 compareTo 方法,我們可以直接使用。
而對于一些自定義類,它們可能在不同情況下需要實現(xiàn)不同的比較策略,我們可以新創(chuàng)建 Comparator 接口,然后使用特定的 Comparator 實現(xiàn)進行比較。
Comparator位于java.util包下,而Comparable位于java.lang包下
實現(xiàn)Comparable接口的方式比實現(xiàn)Comparator接口的耦合性要強
等等………..
推薦閱讀:
【19期】為什么Java線程沒有Running狀態(tài)?
【18期】Java序列化與反序列化三連問:是什么?為什么要?如何做?
微信掃描二維碼,關注我的公眾號
朕已閱?
評論
圖片
表情

