日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java Comparable及Comparator接口區別詳解

瀏覽:28日期:2022-08-30 08:31:25

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

一般,Java中通過接口實現兩個對象的比較,比較常用就是Comparable接口和Comparator接口。首先類要實現接口,并且使用泛型規定要進行比較的對象所屬的類,然后類實現了接口后,還需要實現接口定義的比較方法(compareTo方法或者compare方法),在這些方法中傳入需要比較大小的另一個對象,通過選定的成員變量與之比較,如果大于則返回1,小于返回-1,相等返回0。

一般簡單的回答可以這么說:

1)首先這兩個接口一般都是用來實現集合內的排序,comparable還可以用于兩個對象大小的比較。

2)Comparable接口在java.lang包下面。里面有一個compareTo(T)接口方法。當一個類需要比較的時候,需自行實現Comparable接口的CompareTo方法。當調用集合排序方法的時候,就會調用對象的compareTo()方法來實現對象的比較。

3)Comparator接口在java.util包下面。Comparator是一個比較器接口,一般單獨定義一個比較器實現該接口中的比較方法compare();在集合sort方法中傳入對應的比較器實現類。一般使用匿名內部類來實現比較器。

4)Comparator相對于Comparable來說更加的靈活,耦合度低。

首先呢,我們可以先了解一下List是如何排序的,我通過寫一個例子來說明;

先寫一個實體類;

public class User { private String name; private Integer age; public static void main(String[] args) { List<User> users=new ArrayList<>(); users.add(new User('yao',19)); users.add(new User('zhang',20)); users.add(new User('li',17)); users.add(new User('xu',15)); users.add(new User('xupeng',15)); users.sort(new UserComparator()); System.out.println(users); } public User(){ } public User(String name, Integer age) { this.name = name; this.age = age; } @Override public String toString() { return 'User{' +'name=’' + name + ’’’ +', age=' + age +’}’; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; }}

再寫一個實現比較器接口的類方法;

/** * 實現比較器接口,并重寫compare方法 */public class UserComparator implements Comparator<User> { @Override public int compare(User o1, User o2) { int age=o1.getAge()- o2.getAge(); return age!=0?age:o1.getName().length()-o2.getName().length(); }}

最后,我們的測試結果是這樣的,說明成功了;

Java Comparable及Comparator接口區別詳解

一、Comparable接口

1)什么是Comparable接口:

此接口強行對實現它的每個類的對象進行整體排序。此排序被稱為該類的自然排序 ,類的 compareTo方法被稱為它的自然比較方法 。實現此接口的對象列表(和數組)可以通過 Collections.sort(和 Arrays.sort )進行自動排序。實現此接口的對象可以用作有序映射表中的鍵或有序集合中的元素,無需指定比較器。

2)實現什么方法:

int compareTo(T o)

比較此對象與指定對象的順序。如果該對象小于、等于或大于指定對象,則分別返回負整數、零或正整數。

參數: o - 要比較的對象。

返回:負整數、零或正整數,根據此對象是小于、等于還是大于指定對象。

拋出:ClassCastException - 如果指定對象的類型不允許它與此對象進行比較。

3)實例(注:代碼基本上只改動我圈出來的即可測試,其它的照List排序的元代碼使用即可測試出結果):

當前對象 this與傳入的其他對應的比較方法時;

Java Comparable及Comparator接口區別詳解

二、Comparator接口

1)實例說明:

Java Comparable及Comparator接口區別詳解

Comparator接口與Comparable接口不同的是:

①Comparator位于包java.util下,而Comparable位于包java.lang下。

②Comparable接口將比較代碼嵌入需要進行比較的類的自身代碼中,而Comparator接口在一個獨立的類中實現比較。

③comparator接口相對更靈活些,因為它跟接口實現的類是耦合在一起的,可以通過換比較器來換不同的規則進行比較,即如果前期類的設計沒有考慮到類的Compare問題而沒有實現Comparable接口,后期可

以通過Comparator接口來實現比較算法進行排序,并且為了使用不同的排序標準做準備,比如:升序、降序。

④Comparable接口強制進行自然排序,而Comparator接口不強制進行自然排序,可以指定排序順序。

⑤換一種說法,簡單的說:

Comparable:使user類具有自比較的能力,可以讓自己跟同類型的數據做比較;

Comparator:就是一個比較器,像一個第三方,傳入兩個對象,讓比較器去判斷誰大誰小;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
麻豆视频在线观看免费网站黄| 国产麻豆一区二区三区精品视频| 综合亚洲自拍| 日韩中文一区二区| 青草国产精品| 国产一级成人av| 国产精品激情电影| 精品国产网站| 九一成人免费视频| 亚洲欧美日韩国产| 日韩精品一区二区三区中文字幕| 免费久久99精品国产| 亚洲欧洲国产精品一区| 国产情侣久久| 久久uomeier| 99在线精品视频在线观看| 亚洲免费一区二区| 亚洲精品成人一区| 国产videos久久| 亚洲在线国产日韩欧美| 中文字幕av一区二区三区人| 日韩av中文字幕一区二区三区| 精品一区二区三区中文字幕| 激情久久婷婷| 97精品久久| 九九精品调教| 91p九色成人| 日本高清不卡一区二区三区视频| 天堂成人国产精品一区| 激情综合婷婷| 婷婷久久免费视频| 日韩精品欧美| 国产精品啊v在线| 色吊丝一区二区| 日韩福利视频导航| 国产成人精品亚洲日本在线观看| 蜜桃av一区二区三区电影| 国际精品欧美精品| 午夜亚洲福利| 久久中文字幕av一区二区不卡| 日韩高清电影免费| 午夜免费一区| 国产一区丝袜| 日韩高清成人在线| 水蜜桃久久夜色精品一区的特点| 黄色aa久久| 精品国产成人| 久久影视三级福利片| 亚洲精品伊人| 99综合视频| 日韩成人亚洲| 国产一区二区三区免费在线| 91免费精品国偷自产在线在线| 黄色亚洲在线| 激情婷婷综合| 亚洲午夜av| 欧美日韩国产在线观看网站 | 日韩av二区| 国产精品宾馆| 久久av影院| 精品视频一区二区三区在线观看 | 99久久精品费精品国产| 国产一区二区三区久久 | 日韩 欧美一区二区三区| 99视频在线精品国自产拍免费观看| www.九色在线| 日韩精品不卡一区二区| 伊人久久视频| 91精品国产成人观看| 欧美一区三区| 久久人人99| 午夜在线一区二区| 日韩高清在线观看一区二区| 蜜桃久久久久久久| 婷婷五月色综合香五月| 国产欧美日韩精品一区二区免费 | 亚洲精品.com| 99香蕉国产精品偷在线观看 | 欧美日韩xxxx| 国产福利资源一区| 麻豆视频在线观看免费网站黄| 亚洲播播91| 免费观看在线综合色| 国产欧美另类| 美女网站视频一区| 亚洲精品成a人ⅴ香蕉片| 精品久久影院| 久久国产精品久久久久久电车 | 91视频一区| 亚洲一区网站| 国产精品v一区二区三区| 午夜电影亚洲| 另类欧美日韩国产在线| 91精品精品| 久久亚洲资源中文字| 99国内精品| 国内不卡的一区二区三区中文字幕| 欧美高清不卡| 美女性感视频久久| 99亚洲视频| 老牛国内精品亚洲成av人片 | 欧美日一区二区在线观看| 午夜影院一区| 日本午夜精品久久久久| 国产真实久久| 国产一区二区三区久久久久久久久| 手机精品视频在线观看| 黑人精品一区| 国产乱码精品一区二区三区亚洲人| 亚洲香蕉网站| 日本蜜桃在线观看视频| 国产精品igao视频网网址不卡日韩| 免费久久精品| 国产免费av一区二区三区| 日韩精品福利一区二区三区| 国产精品成人自拍| 好看的av在线不卡观看| 黑森林国产精品av| 精品中文字幕一区二区三区四区| 日本综合视频| 蜜臀久久久久久久| 麻豆91精品| 老色鬼久久亚洲一区二区| 精品一区三区| 99亚洲精品| 美女久久网站| 综合视频一区| 91精品国产自产在线丝袜啪| 日韩欧美中文字幕在线视频| 亚州av一区| 国产精品chinese| 国产精品一区二区免费福利视频| 日韩av一级片| 毛片不卡一区二区| 最近高清中文在线字幕在线观看1| 国产一区二区三区亚洲综合| 国产一区二区三区久久| 欧美男人天堂| 91成人网在线观看| 亚洲精品欧美| 国产精品欧美大片| 久久久久观看| 亚洲午夜精品久久久久久app| 99xxxx成人网| 日本午夜精品久久久| 国产激情精品一区二区三区| 韩日一区二区| 妖精视频成人观看www| 国产免费av一区二区三区| 91亚洲一区| 综合亚洲自拍| 六月婷婷综合| 美国三级日本三级久久99 | 日韩午夜视频在线| 亚洲一级少妇| 欧美国产另类| 日韩中文字幕| 在线看片福利| 日韩精品亚洲专区| 麻豆久久久久久久| 九九综合在线| 精品91福利视频| 日本在线不卡视频一二三区| 最新中文字幕在线播放| 免费成人在线观看| 荡女精品导航| 欧美亚洲福利| 亚洲欧美日韩国产| 日韩av福利| 免费在线欧美黄色| 综合日韩在线| 在线视频精品| 999国产精品永久免费视频app| 欧美亚洲tv| 国产精品嫩草99av在线| 国产不卡精品在线| 欧美黄页在线免费观看| 日本亚洲视频在线| 亚洲黑丝一区二区| 亚洲人成在线网站| 精品午夜视频| 国产精品videosex极品| 欧美日韩调教| 日韩高清一区在线| 日韩中文欧美在线| 9国产精品视频| 不卡在线一区二区| 99久久视频| 在线国产一区| 国产亚洲毛片| 伊人久久成人| 亚洲永久字幕| 亚洲一区二区免费看| 日韩精品一二三区| 久久香蕉精品| 日本一不卡视频| 久久99影视| 国产 日韩 欧美一区| 精品日韩视频| 视频一区欧美日韩|